JavaScript String 字串處理函數

JavaScript 是動態的程式語言 Dynamic Programming Language 可以用來操作網頁上的互動元素。在 JavaScriptString 字串為基本的資料型別,可以用來儲存和處理文字。JavaScript 提供許多字串處理函數可以方便地對字串進行各種操作。

JavaScript
String
METHODS

length 字串長度

傳回字串長度「計算幾個字」空字串的 length0JavaScript 使用 UTF-16 編碼用來表示大部分常見的字元,使用兩個代碼單元表示不常用的字元。因此 length 返回值可能與字串中實際的字元數量不相同。獨角碼一個字可能有兩個或四個位元組。(但尚未找到)

stringObject.length;
let myStr = "myString";
stringObject.length; /* 8 */
let myStr = "基本字串";
stringObject.length; /* 4 */
let myStr = "《基本(符號)字串》";
stringObject.length; /* 10 */
let myStr = "基本的な文字列";
stringObject.length; /* 7 */
0

substr() 提取字串中的幾個字

取字串中的幾個字 JavaScript 的起始位置是 0。如果省略了 length 那麼返回從 stringObject 的開始位置到結尾的字串。-1 指字串中最後一個字元、-2 指倒數第二個字元,以此類推。

stringObject.substr(start, length)
let myStr = "myString";
myStr.substr(2,3); /* Str */
myStr.substr(-3,3); /* ing */
myStr.substr(2); /* String */

substring() 提取字串中兩個指定索引號之間的字元

取字串中的幾個字,起始位置是 0 從指定的位置 start 到指定「位置 index」的字串。與 slice() 和 substr() 方法不同的是 substring() 不接受負的參數小於 0 則為 0。建議使用 slice() 靈活些

stringObject.substring(start, index)
let myStr = "myString";
myStr.substring(2,5); /* Str */
myStr.substring(2,25); /* String (超出 length 只取到字串的結尾) */

JavaScriptsubstrsubstring 的分別:
String.substr(start, length) :從指定的位置 start 截取 到 指定「長度」length 的字串。
String.substring(start, index) :從指定的位置 start 到 指定「位置」index 的字串。

slice() 取得部份字串

slice() 比 substring() 差異是可以使用「負數」為參數。另與 substr() 不同是因為它用兩個字元的「位置」來指定子串,而 substr() 則用字元位置和長度來指定子串。

stringObject.slice(start, end)

start 要取得部份字串的起始。如果是負數,則該參數規定的是從字串的尾部開始算起的位置。
也就是說 -1 指字串的最後一個字元,-2 指倒數第二個字元,以此類推。

end 接著要取得部份字串的結尾。若未指定此參數,則要提取的子串包括 start 到原字串結尾的字串。
如果該參數是負數,那麼它規定的是從字串的尾部開始算起的位置。

let myStr = "myString ABCDEF";
myStr.slice(5); /* ing ABCDEF */
myStr.slice(2,7); /* Strin */
myStr.slice(-6,-3); /* ABC */
myStr.slice(-3); /* DEF */

charAt() 取字串中的一個字

取字串中的一個字 index 索引指標從 0 算起、如果參數 index 不在 0 與字串長度之間,將返回一個空字串。

stringObject.charAt(index)
let myStr = "myString";
myStr.charAt(0); /* m */
myStr.charAt(2); /* S */
myStr.charAt(10); /* 返回一個空字串 */

charCodeAt() 取字串中一個字的編碼

傳回字串中一個字的 ISO-Latin-1 碼 ( index 索引指標從 0 算起 ) 為十進位的 ASCII 編碼

stringObject.charCodeAt(index)
let myStr = "ABC";
myStr.charCodeAt(0); /* 65 (等於 VBScript Asc("A")) */
myStr.charCodeAt(1); /* 66 */
let myStr = "字串";
myStr.charCodeAt(0); /* 23383 */

有時候使用 charCodeAt() 來判斷中文字及字串的分割點。

concat() 混合兩個字串成一個新字串

將把它的所有參數轉換成字串,然後按順序連接到字串 stringObject 的「尾部」,並返回連接後的字串。請注意 stringObject 本身並沒有被更改。stringObject.concat()Array.concat() 很相似。

stringObject.concat(stringX,stringX,...,stringX)
let myStr = "my";
myStr.concat("String"); /* myString */
let myStr = "my";
myStr.concat("Str","ing"); /* myString */

indexOf() 字串尋找

字串尋找「由左至右尋找」將從頭到尾地檢索字串 stringObject 是否包含有 searchvalue。開始檢索的位置在字串的 fromIndex 處或字串的開頭(沒有指定 fromIndex 時)。 如果找到一個 searchvalue 則返回 searchvalue 的第一次出現的位置。stringObject 中的字元位置是從 0 開始的。

stringObject.indexOf(searchvalue,fromIndex)
let myStr = "myString String";
myStr.indexOf("Str",1); /* 2 */
myStr.indexOf("Str",5); /* 9 */
myStr.indexOf("Str",10); /* -1 沒有找到 */

lastIndexOf() 字串反向尋找

字串反向尋找「由右至左尋找」(反向)將從尾到頭地檢索字串 stringObject 看它是否含有子串 searchvalue。開始檢索的位置(左)在字串的 fromIndex 處或沒有指定則為字串的結尾。

stringObject.lastIndexOf(searchvalue,fromIndex)
let myStr = "myString String";
myStr.lastIndexOf("Str",5); /* 2 */
myStr.lastIndexOf("Str"); /* 9 */
myStr.lastIndexOf("Str",1); /* -1 沒有找到 */

replace() 字串取代

字串取代符合 regexp 部份被 replaceString 部份取代,可加 /g 代表總體尋找,可加 /i 代表不分大小寫。

stringObject.replace(regexp, replaceString)
let myStr = "myString";
myStr.replace(/Str/,"xxx"); /* myxxxing */
myStr.replace(/str/,"xxx"); /* myString (大小寫不同) */
let myStr = "As As as As";
myStr.replace(/As/,"Bs"); /* Bs As as As (預設下只有一次) */
myStr.replace(/As/ig,"Bs"); /* Bs Bs Bs Bs (i 忽略大小寫, g 全部取代) */

match() 傳回尋找到的字串

傳回尋「找到的字串」regexp 為待尋找的字串,可加 /g 代表總體尋找,可加 /i 代表不分大小寫。

stringObject.match(regexp)
let myStr = "myString";
myStr.match("Str"); /* Str */
myStr.match(/Str/); /* Str */
myStr.match(/str/); /* null */
myStr.match(/str/ig); /* Str,Str (總體尋找) */

search() 傳回尋找到的字串位置

傳回尋找到的「字串位置」regexp 為待尋找的字串,可加 /g 代表總體尋找,可加 /i 代表不分大小寫。

stringObject.search(regexp)
let myStr = "myString String";
myStr.search("Str"); /* 2 */
myStr.search(/Str/); /* 2 */
myStr.search(/str/); /* -1 */
myStr.search(/str/i); /* 2 (忽略大小寫) */

split() 分隔成字串陣列

用於把字串分隔成「字串陣列」(separator 為分隔字串 length 為分隔數目)。該陣列是通過在 separator 指定的邊界處將字串 stringObject 分割成子串創建的。返回的陣列中的字串不包括 separator 自身。如果分隔字串 separator 為空字串 ("") 那麼 stringObject 中的每個字元之間都會被分割。

stringObject.split(separator, length);
let myStr = "What plan for Weekend?"
myStr.split(""); /* W,h,a,t, ,p,l,a,n, ,f,o,r, ,W,e,e,k,e,n,d,? */
myStr.split("",8); /* W,h,a,t, ,p,l,a (分隔數目 8) */
myStr.split(" "); /* What,plan,for,Weekend? */
myStr.split(/\s+/); /* What,plan,for,Weekend? */
myStr.split(" ",3); /* What,plan,for (分隔數目 3) */
myStr.split(/\s+/,3); /* What,plan,for (分隔數目 3) */

/\s+/ 相等於多次空白字元。

let myStr = "2:3:4:5"
myStr.split(":"); /* 2,3,4,5 */
let myStr = "A|B|C|D|E|FG"
myStr.split("|"); /* A,B,C,D,E,FG */