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

时间:2014-04-09 09:27:29

标签: javascript string

这是针对别的事情,但我举了一个例子来说明这个问题。 注意:我想删除所有出现的“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);

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

2 个答案:

答案 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", "");

如果我不理解你的要求,请告诉我。