2011-06-22 78 views

回答

2

因为您的字符串中有多个space,而.replace正在替换一个空格,所以遇到了第一个空格。

可正常工作,只有一个空间

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

的功能只是取代你搜索的字符串的一个实例。

要更换比较多,可以搭配正则表达式:

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

这条所有的“空白”字符。 “\ s”匹配空格,“+”表示空白字符的“一个或多个匹配项”,尾部的“g”表示“匹配字符串中的所有匹配序列”。

1

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

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

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

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

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