协慌网

登录 贡献 社区

替换字符串中所有字符实例的最快方法

用 JavaScript 替换字符串中所有字符串 / 字符实例的最快方法是什么? while ,一个for循环,一个正则表达式?

答案

最简单的方法是使用带有g标志的正则表达式替换所有实例:

str.replace(/foo/g, "bar")

这将用字符串str bar替换所有出现的foo 。如果只有一个字符串,可以将其转换为 RegExp 对象,如下所示:

var pattern = "foobar",
    re = new RegExp(pattern, "g");

尝试以下 replaceAll:http ://dumpsite.com/forum/index.php?topic=4.msg8#msg8

String.prototype.replaceAll = function(str1, str2, ignore) 
{
    return this.replace(new RegExp(str1.replace(/([\/\,\!\\\^\$\{\}\[\]\(\)\.\*\+\?\|\<\>\-\&])/g,"\\$&"),(ignore?"gi":"g")),(typeof(str2)=="string")?str2.replace(/\$/g,"$$$$"):str2);
}

它的速度非常快,并且适用于许多其他条件无法满足的所有这些条件:

"x".replaceAll("x", "xyz");
// xyz

"x".replaceAll("", "xyz");
// xyzxxyz

"aA".replaceAll("a", "b", true);
// bb

"Hello???".replaceAll("?", "!");
// Hello!!!

让我知道您是否可以打破它,或者您有更好的东西,但是请确保它可以通过这四个测试。

var mystring = 'This is a string';
var newString = mystring.replace(/i/g, "a");

newString 现在是'Thas as strang'