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 */