1. 程式人生 > 其它 >JavaScript 字串方法

JavaScript 字串方法

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

  字串方法和屬性

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

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

  字串長度

  length 屬性返回字串的長度:

  例項

  var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

  var sln = txt.length;

  親自試一試

  查詢字串中的字串

  indexOf() 方法返回字串中指定文字首次出現的索引(位置):

  例項

  var str = "The full name of China is the People's Republic of China.";

  var pos = str.indexOf("China");

  親自試一試

  JavaScript 從零計算位置。

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

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

  例項

  var str = "The full name of China is the People's Republic of China.";

  var pos = str.lastIndexOf("China");

  親自試一試

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

  例項

  var str = "The full name of China is the People's Republic of China.";

  var pos = str.indexOf("USA");

  親自試一試

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

  例項

  var str = "The full name of China is the People's Republic of China.";

  var pos = str.indexOf("China", 18);

  親自試一試

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

  例項

  var str = "The full name of China is the People's Republic of China.";

  var pos = str.lastIndexOf("China", 50);

  親自試一試

  檢索字串中的字串

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

  例項

  var str = "The full name of China is the People's Republic of China.";

  var pos = str.search("locate");

  親自試一試

  您注意到了嗎?

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

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

  search() 方法無法設定第二個開始位置引數。

  indexOf() 方法無法設定更強大的搜尋值(正則表示式)。

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

  提取部分字串

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

  slice(start, end)

  substring(start, end)

  substr(start, length)

  slice() 方法

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

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

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

  例項

  var str = "Apple, Banana, Mango";

  var res = str.slice(7,13);

  res 的結果是:

  Banana

  親自試一試

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

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

  例項

  var str = "Apple, Banana, Mango";

  var res = str.slice(-13,-7);

  res 的結果是:

  Banana

  親自試一試

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

  例項

  var res = str.slice(7);

  親自試一試

  或者從結尾計數:

  例項

  var res = str.slice(-13);

  親自試一試

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

  substring() 方法

  substring() 類似於 slice()。

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

  例項

  var str = "Apple, Banana, Mango";

  var res = str.substring(7,13);

  res 的結果是:

  Banana

  親自試一試

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

  substr() 方法

  substr() 類似於 slice()。

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

  例項

  var str = "Apple, Banana, Mango";

  var res = str.substr(7,6);

  res 的結果是:

  Banana

  親自試一試

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

  例項

  var str = "Apple, Banana, Mango";

  var res = str.substr(7);

  親自試一試

  res 的結果是:

  Banana, Mango

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

  例項

  var str = "Apple, Banana, Mango";

  var res = str.substr(-5);

  親自試一試

  res 的結果是:

  Mango

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

  替換字串內容

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

  例項

  str = "Please visit Microsoft!";

  var n = str.replace("Microsoft", "W3School");

  親自試一試

  replace() 方法不會改變呼叫它的字串。它返回的是新字串。

  預設地,replace() 只替換首個匹配:

  例項

  str = "Please visit Microsoft and Microsoft!";

  var n = str.replace("Microsoft", "W3School");

  親自試一試

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

  例項

  str = "Please visit Microsoft!";

  var n = str.replace("MICROSOFT", "W3School");

  親自試一試

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

  例項

  str = "Please visit Microsoft!";

  var n = str.replace(/MICROSOFT/i, "W3School");

  親自試一試

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

  如需替換所有匹配,請使用正則表示式的 g 標誌(用於全域性搜尋):

  例項

  str = "Please visit Microsoft and Microsoft!";

  var n = str.replace(/Microsoft/g, "W3School");

  親自試一試

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

  轉換為大寫和小寫

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

  例項

  var text1 = "Hello World!"; // 字串

  var text2 = text1.toUpperCase(); // text2 是被轉換為大寫的 text1

  親自試一試

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

  例項

  var text1 = "Hello World!"; // 字串

  var text2 = text1.toLowerCase(); // text2 是被轉換為小寫的 text1

  親自試一試

  concat() 方法

  concat() 連線兩個或多個字串:

  例項

  var text1 = "Hello";

  var text2 = "World";

  text3 = text1.concat(" ",text2);

  親自試一試

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

  例項

  var text = "Hello" + " " + "World!";

  var text = "Hello".concat(" ","World!");

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

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

  String.trim()

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

  例項

  var str = " Hello World! ";

  alert(str.trim());

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

  親自試一試

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

  例項

  var str = " Hello World! ";

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

  親自試一試

  您還可以使用上面的 replace 方案把 trim 函式新增到 JavaScript String.prototype:

  例項

  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());

  親自試一試

  提取字串字元

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

  charAt(position)

  charCodeAt(position)

  charAt() 方法

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

  例項

  var str = "HELLO WORLD";

  str.charAt(0); // 返回 H

  親自試一試

  charCodeAt() 方法

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

  例項

  var str = "HELLO WORLD";

  str.charCodeAt(0); // 返回 72

  親自試一試

  屬性訪問(Property Access)

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

  例項

  var str = "HELLO WORLD";

  str[0]; // 返回 H

  親自試一試

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

  不適用 Internet Explorer 7 或更早的版本

  它讓字串看起來像是陣列(其實並不是)

  如果找不到字元,[ ] 返回 undefined,而 charAt() 返回空字串。

  它是隻讀的。str[0] = "A" 不會產生錯誤(但也不會工作!)

  例項

  var str = "HELLO WORLD";

  str[0] = "A"; // 不產生錯誤,但不會工作

  str[0]; // 返回 H

  親自試一試

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

  把字串轉換為陣列

  可以通過 split() 將字串轉換為陣列:

  例項

  var txt = "a,b,c,d,e"; // 字串

  txt.split(","); // 用逗號分隔

  txt.split(" "); // 用空格分隔

  txt.split("|"); // 用豎線分隔

  親自試一試

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

  如果分隔符是 "",被返回的陣列將是間隔單個字元的陣列:

  例項

  var txt = "Hello"; // 字串

  txt.split(""); // 分隔為字元