JavaScript 字符串方法

JavaScript 字符串方法


JavaScript 字符串方法


  • JS 字符串
  • JS 數字

字符串方法幫助您處理字符串。

字符串方法和屬性

原始值,比如“Bill Gates”,無法擁有屬性和方法(因為它們不是對象)。

但是通過 JavaScript,方法和屬性也可用於原始值,因為在執行方法和屬性時 JavaScript 將原始值視為對象。

字符串長度

length 屬性返回字符串的長度:

實例

<code>var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var sln = txt.length;
/<code>

查找字符串中的字符串

indexOf() 方法返回字符串中指定文本首次

出現的索引(位置):

實例

<code>var str = "The full name of China is the People's Republic of China.";
var pos = str.indexOf("China");
/<code>

親自試一試

JavaScript 從零計算位置。

0 是字符串中的第一個位置,1 是第二個,2 是第三個 ...

lastIndexOf() 方法返回指定文本在字符串中最後一次出現的索引:

實例

<code>var str = "The full name of China is the People's Republic of China.";
var pos = str.lastIndexOf("China");
/<code>

如果未找到文本, indexOf() 和 lastIndexOf() 均返回 -1。

實例

<code>var str = "The full name of China is the People's Republic of China.";
var pos = str.indexOf("USA");
/<code>

兩種方法都接受作為檢索起始位置的第二個參數。

實例

<code>var str = "The full name of China is the People's Republic of China.";
var pos = str.indexOf("China", 18);
/<code>

親自試一試

lastIndexOf() 方法向後進行檢索(從尾到頭),這意味著:假如第二個參數是 50,則從位置 50 開始檢索,直到字符串的起點。

實例

<code>var str = "The full name of China is the People's Republic of China.";
var pos = str.lastIndexOf("China", 50);
/<code>

檢索字符串中的字符串

search() 方法搜索特定值的字符串,並返回匹配的位置:

實例

<code>var str = "The full name of China is the People's Republic of China.";
var pos = str.search("locate");
/<code>

您注意到了嗎?

兩種方法,indexOf() 與 search(),是相等的

這兩種方法是不相等的。區別在於:

  • search() 方法無法設置第二個開始位置參數。
  • indexOf() 方法無法設置更強大的搜索值(正則表達式)。

您將在正則表達式的章節學習到這些更強大的檢索值。

提取部分字符串

有三種提取部分字符串的方法:

  • slice(start, end)
  • substring(start, end)
  • substr(start, length)

slice() 方法

slice() 提取字符串的某個部分並在新字符串中返回被提取的部分。

該方法設置兩個參數:起始索引(開始位置),終止索引(結束位置)。

這個例子裁剪字符串中位置 7 到位置 13 的片段:

實例

<code>var str = "Apple, Banana, Mango";
var res = str.slice(7,13);
/<code>

res 的結果是:

<code>Banana/<code> 

如果某個參數為負,則從字符串的結尾開始計數。

這個例子裁剪字符串中位置 -12 到位置 -6 的片段:

實例

<code>var str = "Apple, Banana, Mango";
var res = str.slice(-13,-7);
/<code>

res 的結果是:

<code>Banana/<code>

如果省略第二個參數,則該方法將裁剪字符串的剩餘部分:

實例

<code>var res = str.slice(7);/<code>

親自試一試

或者從結尾計數:

實例

<code>var res = str.slice(-13);/<code>

提示:負值位置不適用 Internet Explorer 8 及其更早版本。

substring() 方法

substring() 類似於 slice()。

不同之處在於 substring() 無法接受負的索引。

實例

<code>var str = "Apple, Banana, Mango";
var res = str.substring(7,13);
/<code>

res 的結果是:

<code> /<code>

如果省略第二個參數,則該 substring() 將裁剪字符串的剩餘部分。

substr() 方法

substr() 類似於 slice()。

不同之處在於第二個參數規定被提取部分的長度

實例

<code>var str = "Apple, Banana, Mango";
var res = str.substr(7,6);
/<code>

res 的結果是:

<code>Banana/<code>

如果省略第二個參數,則該 substr() 將裁剪字符串的剩餘部分。

實例

<code>var str = "Apple, Banana, Mango";
var res = str.substr(7);
/<code>

res 的結果是:

<code>Banana, Mango/<code>

如果首個參數為負,則從字符串的結尾計算位置。

實例

<code>var str = "Apple, Banana, Mango";
var res = str.substr(-5);
/<code>

res 的結果是:

<code>Mango/<code>

第二個參數不能為負,因為它定義的是長度。

替換字符串內容

replace() 方法用另一個值替換在字符串中指定的值:

實例

<code>str = "Please visit Microsoft!";
var n = str.replace("Microsoft", "W3School");
/<code>

親自試一試

replace() 方法不會改變調用它的字符串。它返回的是新字符串。

默認地,replace() 只替換首個匹配

實例

<code>str = "Please visit Microsoft and Microsoft!";
var n = str.replace("Microsoft", "W3School");
/<code>

親自試一試

默認地,replace() 對大小寫敏感。因此不對匹配 MICROSOFT:

實例

<code>str = "Please visit Microsoft!";
var n = str.replace("MICROSOFT", "W3School");
/<code>

如需執行大小寫不敏感的替換,請使用正則表達式 /i(大小寫不敏感):

實例

<code>str = "Please visit Microsoft!";
var n = str.replace(/MICROSOFT/i, "W3School");
/<code>

請注意正則表達式不帶引號。

如需替換所有匹配,請使用正則表達式的 g 標誌(用於全局搜索):

實例

<code>str = "Please visit Microsoft and Microsoft!";
var n = str.replace(/Microsoft/g, "W3School");
/<code>

您將在 JavaScript 正則表達式這一章學到更多有關正則表達式的內容。

轉換為大寫和小寫

通過 toUpperCase() 把字符串轉換為大寫:

實例

<code>var text1 = "Hello World!";       // 字符串
var text2 = text1.toUpperCase(); // text2 是被轉換為大寫的 text1
/<code>

通過 toLowerCase() 把字符串轉換為小寫:

實例

<code>var text1 = "Hello World!";       // 字符串
var text2 = text1.toLowerCase(); // text2 是被轉換為小寫的 text1
/<code>

concat() 方法

concat() 連接兩個或多個字符串:

實例

<code>var text1 = "Hello";
var text2 = "World";
text3 = text1.concat(" ",text2);
/<code>

concat() 方法可用於代替加運算符。下面兩行是等效的:

實例

<code>var text = "Hello" + " " + "World!";
var text = "Hello".concat(" ","World!");
/<code>

所有字符串方法都會返回新字符串。它們不會修改原始字符串。

正式地說:字符串是不可變的:字符串不能更改,只能替換。

String.trim()

trim() 方法刪除字符串兩端的空白符:

實例

<code>var str = "       Hello World!        ";
alert(str.trim());
/<code>

警告:Internet Explorer 8 或更低版本不支持 trim() 方法。

如需支持 IE 8,您可搭配正則表達式使用 replace() 方法代替:

實例

<code>var str = "       Hello World!        "; 

alert(str.replace(/^[\\s\\\\uFEFF\\\\xA0]+|[\\s\\\\uFEFF\\\\xA0]+$/g, ''));
/<code>

您還可以使用上面的 replace 方案把 trim 函數添加到 JavaScript String.prototype:

實例

<code>if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^[\\s\\\\uFEFF\\\\xA0]+|[\\s\\\\uFEFF\\\\xA0]+$/g, '');
};
var str = " Hello World! ";
alert(str.trim());
/<code>

提取字符串字符

這是兩個提取字符串字符的安全方法:

  • charAt(position)
  • charCodeAt(position)

charAt() 方法

charAt() 方法返回字符串中指定下標(位置)的字符串:

實例

<code>var str = "HELLO WORLD";
str.charAt(0); // 返回 H
/<code>

親自試一試

charCodeAt() 方法

charCodeAt() 方法返回字符串中指定索引的字符 unicode 編碼:

實例

<code>var str = "HELLO WORLD";

str.charCodeAt(0); // 返回 72
/<code>

屬性訪問(Property Access)

ECMAScript 5 (2009) 允許對字符串的屬性訪問 [ ]:

實例

<code>var str = "HELLO WORLD";
str[0]; // 返回 H
/<code>

使用屬性訪問有點不太靠譜:

  • 不適用 Internet Explorer 7 或更早的版本
  • 它讓字符串看起來像是數組(其實並不是)
  • 如果找不到字符,[ ] 返回 undefined,而 charAt() 返回空字符串。
  • 它是隻讀的。str[0] = "A" 不會產生錯誤(但也不會工作!)

實例

<code>var str = "HELLO WORLD";
str[0] = "A"; // 不產生錯誤,但不會工作
str[0]; // 返回 H
/<code>

提示:如果您希望按照數組的方式處理字符串,可以先把它轉換為數組。

把字符串轉換為數組

可以通過 split() 將字符串轉換為數組:

實例

<code>var txt = "a,b,c,d,e";   // 字符串
txt.split(","); // 用逗號分隔
txt.split(" "); // 用空格分隔
txt.split("|"); // 用豎線分隔
/<code>

如果省略分隔符,被返回的數組將包含 index [0] 中的整個字符串。

如果分隔符是 "",被返回的數組將是間隔單個字符的數組:

實例

<code>var txt = "Hello";       // 字符串
txt.split(""); // 分隔為字符/<code>


分享到:


相關文章: