一、聲明方式 1. 直接賦值 2. 構造函數 這兩種有什麼區別呢? 第一種方式只是聲明瞭一個變數,使用typeof str得到的是'string'。而第二種方式則創建了一個String的包裝對象,typof str2得到的是’object'。 通過console.log輸出 str2中的[[Prim ...
一、聲明方式
1. 直接賦值
var str = 'hello javascript';
2. 構造函數
var str2 = new String('hello world');
這兩種有什麼區別呢?
第一種方式只是聲明瞭一個變數,使用typeof str得到的是'string'。而第二種方式則創建了一個String的包裝對象,typof str2得到的是’object'。 通過console.log輸出
console.log(str); // 'hello world' console.log(st2); //String {0: "h", 1: "e", 2: "l", 3: "l", 4: "o", 5: " ", 6: "w", 7: "o", 8: "r", 9: "l", 10: "d", length: 11, [[PrimitiveValue]]: "hello world"}
str2中的[[PrimitiveValue]]的值是由str2的toString()方法而來的一個string值。
因為str2是一個對象,所以可以給str2設置屬性,而str不可以
str.a = 'barret' console.log(str.a) //undefined
str2.a = 'barret' console.log(str2.a) //barret
二、String方法
1. charCodeAt(index): 返回指定位置的Unicode編碼。
註釋:字元串中第一個字元的下標是 0。如果 index 是負數,或大於等於字元串的長度,則 charCodeAt() 返回 NaN。
var str = 'a'; str.charCodeAt(str[0]); // 97 str.charCodeAt(str[1]); //NaN
2. charAt(index): 返回指定位置的字元,javascript並沒有區別於字元串類型的字元類型,返回的只是長度為1的字元串。
註釋:字元串中第一個字元的下標是 0。如果 index 是負數,或大於等於字元串的長度,則 charAt() 返回 ''。
var str = 'a'; str.charAt(0); // 'a' str.chartAt(1); // ''
3. fromCharCode(code1, code2, ..., codeN): 從Unicode返回字元。參數為一個或多個Unicode值, 用逗號分隔。如果參數為空,則返回空字元串。
註釋:fromCharCode為String的靜態方法,所以調用為String.fromCharCode(),而不是myStr.fromCharCode();
String.fromCharCode(97,98); // "ab"
4. slice(start[, end]): 方法返回字元串的片段。
start下標從0開始的string指定部分起始索引。如果start為負,則將start + length處理, 若相加後start仍未負,則按0處理。
end下標從0開始的string指定部分結束索引。如果start為負,則將end + length處理, 若相加後end仍未負,則按0處理。
var str = 'abcdef'; str.slice(0, 2); // 'ab' str.slice(0, -1); // 'abcde' str.slice(0); // 'abcdef' str.slice(); // 'abcdef' str.slice(-7, -9); // '' str.slice(-7, 2); // 'ab' 等同於str.slice(0,2);
5. substring(start, end): 返回字元串的片段。
start指定子字元串的起始位置, 該索引從0開始起算。
end指定子字元串的結束位置, 該索引從0開始起算。
註釋:substring方法使用start和end兩者中較小值作為子符串起點。 如果start或end未NaN或負數則將其替換為0。
var str = 'abcdef'; str.substring(2, 4); // 'cd' 等同於str.substring(4, 2); str.substring(-1, 2); // 'ab' 等同於str.substring(0, 2);
6. indexOf(substr, [startIndex]): 返回字元串在String對象內第一次出現在子字元串的位置。如果沒有找到,則返回-1。
substr要在String對象中查找的子字元串。
startIndex該整數值指出在String對象內開始查找的索引。
var str = 'abcdef'; str.indexOf('cd', 2); // 2 str.indexOf('cd', 3); // -1
7. lastIndexOf(substr, [startIndex]): 返回String對象中字元串最後出現的位置, 參數同indexOf。
var str = 'abcdefcdg' str.lastIndexOf('cd', 6); // 6 str.lastIndexOf('cd', 5); //2
8. search(reExp): 返回與正則表達式查找內容匹配的第一個字元串的位置。
註釋:如果沒匹配到字元串, 則返回-1,search不執行全局匹配, 忽略標誌g和lastIndex屬性, 總返回第一個匹配。
var str = 'abcdef'; str.search('cd'); // 2 等同於str.search(/cd/);
9. concat(string1[,string2....]): 返回兩個或多個字元串的連接
var str1 = 'abc'; str1.concat('def'); // 'abcdef'
10. split(separator[, limit]): 將一個字元串分割為子字元串, 然後將結果作為字元串返回。
separator可以使字元串貨正則表達式對象。如果忽略,則返回包含整個字元串的單一元素數組。
limit用來限制返回數組中的元素個數。
var str = 'ab,cd,ef'; str.split(','); // ['ab', 'cd', 'ef'] str.split(',', 2); // ['ab', 'cd']