JavaScript无法删除字符串末尾的字符

Dyl*_*guy 2 javascript string

这是为了别的,但我举了一个例子来说明这个问题.注意:我想删除所有出现的"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)

但我仍然想知道为什么会发生这种情况.

Jos*_*eph 5

那是因为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)