我试图运行这行代码并想知道它为什么不起作用。有没有人对此有答案?
var string = "foo bar";
string = string.replace(" ", "");
alert(string.length);
为什么要判断字符串的长度不是改为6?
答案 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
)提供的版本可能效率更高。它也将取代其他类型的空格(制表符,换行符)。