关于javascript的问题 - string.replace()

时间:2011-06-22 15:50:51

标签: javascript string replace

我试图运行这行代码并想知道它为什么不起作用。有没有人对此有答案?

var string = "foo     bar";
string = string.replace(" ", "");
alert(string.length);

为什么要判断字符串的长度不是改为6?

4 个答案:

答案 0 :(得分:4)

该函数仅替换您搜索的字符串的一个实例。

要替换更多,您可以匹配正则表达式:

string = string.replace(/\s+/g, '');

删除所有“空白”字符。 “\ s”匹配空格,“+”表示空格字符的“一次或多次出现”,尾部“g”表示“对字符串中的所有匹配序列执行”。

答案 1 :(得分:2)

由于您的字符串中有多个space.replace正在替换一个空格,因此遇到第一个空格。

这可以按预期工作,只有一个空格

var string = "foo bar";
string = string.replace(" ", "");
alert(string.length);

答案 2 :(得分:1)

替换,当作为第一个参数传递一个字符串时,只替换该字符串的第一个匹配项。要替换所有内容,您需要一个正则表达式:

alert("foo     bar".replace(/ /g, ""));

答案 3 :(得分:0)

那是因为只更换了一个空间。根据JavaScript 1.5规范,String.replace()将正则表达式作为第一个参数,并且字符串参数的行为未定义。浏览器后来决定类似地对待字符串 - 但是没有办法在字符串上指定g标志,因此只进行了一次替换。这将做你想要的:

string = string.replace(/ /g, '');

Pointy(/\s+/g)提供的版本可能效率更高。它也将取代其他类型的空格(制表符,换行符)。