JavaScript 字串簡介

Twait發表於2019-02-16

字串的定義

  • JS字串的概念
    字串就是一串字元,由雙(單)引號括起來。
    字串是 JavaScript 的一種資料型別。
  • 字串的建立

    • 方式一(推薦): var str = `海賊王`; //基本型別
      定義了一個字串變數str,內容為`海賊王`
    • 方式二: var str = new String(“火影”); //引用型別
      定義一個字串變數str,內容為火影,
      注意: 此刻str為引用型別(object物件)

           用new產生的變數都是引用型別的變數,也叫物件
      
    • 方式三: var str = String(`柯南`);
      基本型別: string, number, boolean, undefined等
      引用型別/物件: Array , Date, Object, String, Function等
  • new String()和String()的區別
    var s1 = new String(`千與千尋`);
    var s2 = String(`千與千尋`);
    console.log(typeof s1); //object
    console.log(typeof s2); //string

    當String()和元素符new一起使用, 那麼String()是作為建構函式使用的,它返回的是一個新建立的String物件. (建構函式後面課程會講)
    當不用new運算子呼叫String()時,它只是轉換成原始的字串,並返回轉換後的值.

字串的屬性

  • .length: 表示字串的長度
    例如 : var str = `how are you`;

           console.log(str.length);
           console.log(str[0]);  //獲取字串中對應下標的字元
    

注意: ECMAScript 中的字串是不可變的; 也就是說,字串一旦建立,它們的值就不能改變.
例如: var str = `how are you`;

         str[0] = `year`;  //不會改變

如果要改變某個變數儲存的字串,首先要銷燬原來的字串,然後再用另一個包含新值的字串填充該變數.
var str = hello“;
str = str+`world!`;

字串的獲取

  • str.charAt(x); 返回指定索引的字元

返回在字串str裡索引(位置、下標)為x的字元

  • str.charCodeAt(x); 返回的是位於指定索引的字元的編碼 (ASCII碼)

返回在字串str裡索引為x的字元的編碼(ASCII碼)

  • 將ASCII編碼轉換成字元 (該方法是String的靜態方法,所以用String呼叫)

String.fromCharCode(73,76,79,86,69,85); //”ILOVEU”

字串連線

  • str.concat(`xx`,`yy`);字串連線(連線多個用逗號分隔開)

字串str連線字串`xx`,`yy`

字串查詢

  • str.indexOf(`xxx`); 返回某個指定的字串值在字串中首次出現的位置

返回在字串str裡查詢字元`xxx`第一次出現的位置(索引), 如果沒找到則返回-1

  • str.lastIndexOf(`xxx`); 返回一個指定的字串值最後出現的位置

返回在字串str查詢字元`xxx`最後一次出現(從後向前搜尋)的索引, 如果沒找到則返回-1

  • str.search(): 查詢第一次出現的位置, 但是引數可以是正規表示式
var str = "ABCdabcd";
var index = str.search("abc");
console.log(index); //4

//  /abc/ : 兩個斜槓是正規表示式的語法(類似陣列要寫[]),中間就是你要匹配的字串
//  g: global代表全域性範圍, i:ignore忽略大小寫
var index = str.search(/abc/gi);
console.log(index);

字串替換

  • str.replace(); 替換字串

//在字串中用一些字元替換另一些字元,或替換一個與正規表示式匹配的子串。
//str.replace(引數1,引數2)
//引數1是原字串的某些字元,引數2是新替換的字串內容
//返回一個新的(重新替換後的)字串

 例如: var str = `how are Are are you!`;
         var newStr = str.replace(`are`,`old are`);

這裡的替換隻能執行一次,不能夠進行全域性匹配,如果需要全域性匹配,則應使用正規表示式: str.replace(/are/gi, "old are") //g表示進行全域性匹配,i表示匹配的時候忽略大小寫

字串的擷取與拆分

  • str.substring(開始索引,結束索引); 擷取字串 範圍是[開始索引,結束索引)

如果只有一個引數, 則表示到字串最後

  • str.split(separator, howmany); 根據分隔符、拆分成陣列

separator(字串或正規表示式)
howmany(可以指定返回的陣列的最大長度, 可以省略)
注:如果空字串(“)用作separator, 那麼stringObject中的每個字元之間都會被分割。

  • str.toLowerCase(); 把字串轉換成小寫
  • str.toUpperCase(); 把字串轉換成大寫

Math物件

Math物件可以用於執行數學任務

Math物件的常用函式:

Math.round(3.6) //四捨五入
Math.random() //返回0-1之間的隨機數
Math.max(num1, num2) //返回較大的數
Math.min(num1, num2) //返回較小的數
Math.abs(num) //絕對值
Math.ceil(19.3) //向上取整
Math.floor(11.8) //向下取整
Math.pow(x, y) //x的y次方
Math.sqrt(num) //開平方

console.log(Math.round(3.49)); //3,四捨五入
console.log(Math.random()); //隨機數

console.log(Math.max(3, 4)); //4,較大值
console.log(Math.min(3, 4)); //3,較小值

console.log(Math.abs(-3)); //3,絕對值

console.log(Math.ceil(2.1)); //3, 向上取整
console.log(Math.floor(2.9)); //2, 向下取整

console.log(Math.pow(4, 3)); //64, 4的3次方
console.log(Math.sqrt(64)); //8, 開根號

相關文章