为什么replace
函数不会替换所有出现的内容?
1)Ex不起作用:
//the funcion call
'999.999.999,00'.replace('.', '')
//This replaces only the first match, given as result as below
'999999.999,00'
2)Ex可行,但使用正则表达式:
//the funcion call
'999.999.999,00'.replace(/\./g, '')
//This replaces all matches, given as result as below
'999999999,00'
Ex 1 是否合适?这是replace
的正确行为吗?
答案 0 :(得分:2)
在你的第一种情况下,你应该将旗帜作为第三个参数传递:
'999.999.999,00'.replace('.', '', 'g')
您可以在MDN找到更多信息。但是,并非所有浏览器都支持此功能,您应该自担风险使用它。
答案 1 :(得分:1)
是。 JavaScript替换应该只替换第一个匹配。如果要替换多个相同的字符串,则应该使用正则表达式。你也可以使用一个简单的while循环:
var match = '.';
var str = '999.999.999,00';
while(str.indexOf(match) != -1) str = str.replace(match, '');
但通常使用正则表达式要容易得多。 while loops can be faster though。对于需要对大块文本执行的简单替换操作,这可能是相关的。对于较小的替换操作,使用Regex就可以了。