字符串查找和替换函数

要在字符串中搜索字符串,有几个函数:

indexOf( searchString )lastIndexOf( searchString )

indexOf() 将返回字符串中第一次出现 searchString 的索引。如果找不到 searchString,则返回 -1

var string = "Hello, World!";
console.log( string.indexOf("o") ); // 4
console.log( string.indexOf("foo") ); // -1

同样,如果没有找到,lastIndexOf() 将返回最后一次出现 searchstring-1 的索引。

var string = "Hello, World!";
console.log( string.lastIndexOf("o") );   // 8
console.log( string.lastIndexOf("foo") ); // -1

includes( searchString, start )

includes() 将返回一个布尔值,告诉 searchString 是否存在于字符串中,从索引 start 开始(默认为 0)。如果你只需要测试子字符串的存在,这比 indexOf() 更好。

var string = "Hello, World!";
console.log( string.includes("Hello") ); // true
console.log( string.includes("foo") );   // false

replace( regexp|substring, replacement|replaceFunction )

replace() 将返回一个字符串,其中出现的所有子字符串都与 RegExp regexp 或字符串 substring 匹配,字符串为 replacementreplaceFunction 的返回值。

请注意,这不会修改字符串,但返回带有替换的字符串。

var string = "Hello, World!";
string = string.replace( "Hello", "Bye" );
console.log( string ); // "Bye, World!"

string = string.replace( /W.{3}d/g, "Universe" );
console.log( string ); // "Bye, Universe!"

replaceFunction 可用于正则表达式对象的条件替换(即,与 regexp 一起使用)。参数按以下顺序排列:

参数 含义
match 匹配整个正则表达式的子字符串
g1g2g3,… 正则表达式中的匹配组
offset 整个字符串中匹配的偏移量
string 整个字符串

请注意,所有参数都是可选的。

var string = "heLlo, woRlD!";
string = string.replace( /([a-zA-Z])([a-zA-Z]+)/g, function(match, g1, g2) {
    return g1.toUpperCase() + g2.toLowerCase();
}); 
console.log( string ); // "Hello, World!"