字串的定義
- 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等
- 方式一(推薦): var str = `海賊王`; //基本型別
- 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, 開根號