我试图运行这行代码,并想知道为什么它不工作。有没有人有这个答案?关于javascript的问题 - string.replace()
var string = "foo bar";
string = string.replace(" ", "");
alert(string.length);
为什么发出字符串的长度不改为6?
我试图运行这行代码,并想知道为什么它不工作。有没有人有这个答案?关于javascript的问题 - string.replace()
var string = "foo bar";
string = string.replace(" ", "");
alert(string.length);
为什么发出字符串的长度不改为6?
因为您的字符串中有多个space
,而.replace
正在替换一个空格,所以遇到了第一个空格。
可正常工作,只有一个空间
var string = "foo bar";
string = string.replace(" ", "");
alert(string.length);
的功能只是取代你搜索的字符串的一个实例。
要更换比较多,可以搭配正则表达式:
string = string.replace(/\s+/g, '');
这条所有的“空白”字符。 “\ s”匹配空格,“+”表示空白字符的“一个或多个匹配项”,尾部的“g”表示“匹配字符串中的所有匹配序列”。
当传递一个字符串作为第一个参数时,将只替换该字符串的第一个匹配项。要取代所有内容,您需要一个正则表达式:
alert("foo bar".replace(/ /g, ""));
这是因为只有一个空间已被替换。根据JavaScript 1.5规范,String.replace()
将正则表达式作为第一个参数,并且字符串参数的行为未定义。浏览器后来决定对字符串进行类似处理 - 但是没有办法在字符串上指定g
标志,因此只能进行一次替换。这将做你想要什么:
string = string.replace(/ /g, '');
的由尖(/\s+/g
)提供的版本可能更有效。然而。它也将取代其他类型的空格(制表符,换行符)。