这是为了别的,但我举了一个例子来说明这个问题.注意:我想删除所有出现的"o",巧合的是它看起来好像我只想删除字符串末尾的字符 - 我认为有一个错误,无法删除最后一个字符(并replace取代了所有事件).
var s = "hollo";
console.log(s);
s = s.replace("o", "");
console.log(s)
Run Code Online (Sandbox Code Playgroud)
这种情况发生在Chrome和Firefox上,这是我测试过的唯一浏览器.
我在控制台中得到了这个
hollo
hllo
Run Code Online (Sandbox Code Playgroud)
为什么这样做?
编辑:这似乎解决了问题:
if (s.lastIndexOf("o") != -1) s = s.substr(0, s.length - 1);
Run Code Online (Sandbox Code Playgroud)
但我仍然想知道为什么会发生这种情况.
那是因为replace只删除它看到的第一场比赛.要删除所有实例,请改用正则表达式.无论情况(i)如何,这一全局删除"o"(g).
s = s.replace(/o/gi,'');
Run Code Online (Sandbox Code Playgroud)
在控制台中测试它,它应该给你"hll":
'hollo'.replace(/o/gi,'');
Run Code Online (Sandbox Code Playgroud)