这是针对别的事情,但我举了一个例子来说明这个问题。
注意:我想删除所有出现的“o”,巧合的是它看起来好像我只想删除字符串末尾的字符 - 我认为有一个错误,无法删除最后一个字符(而且replace
取代了所有事件。)
var s = "hollo";
console.log(s);
s = s.replace("o", "");
console.log(s)
这种情况发生在Chrome和Firefox上,这是我测试过的唯一浏览器。
我在控制台中得到了这个
hollo
hllo
为什么会这样做?
编辑:这似乎可以解决问题:
if (s.lastIndexOf("o") != -1) s = s.substr(0, s.length - 1);
但我仍然想知道为什么会发生这种情况。
答案 0 :(得分:5)
那是因为replace
只删除它看到的第一个匹配。要删除所有实例,请改用正则表达式。无论情况(i)如何,这一全局删除“o”(g)。
s = s.replace(/o/gi,'');
在控制台中测试它,它应该给你“hll”:
'hollo'.replace(/o/gi,'');
答案 1 :(得分:0)
我不希望你想要删除所有' o'从字符串。你也可以为它创建prototy。你想使用像#ReplaceAll(" o","")'。
function ReplaceAll(str,oldchar,newchar)
{
if(str.indexOf(oldchar) != -1)
{
str = str.replace(oldchar, newchar);
str = ReplaceAll(str,oldchar,newchar);
}
else
{
return str;
}
}
var s = "hollo";
s = ReplaceAll(s,"o", "");
如果我不理解你的要求,请告诉我。