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

JavaScript cant remove character at end of string

本文关键字:字符 字符串 删除 JavaScript      更新时间:2023-09-26

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

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

这是因为replace只删除它看到的第一个匹配。若要删除所有引用,请改用正则表达式。无论情况(i)如何,这一个都全局地删除了"o"(g)。

s = s.replace(/o/gi,'');

在控制台中测试它,它应该会给你"hll":

'hollo'.replace(/o/gi,'');

我不希望您从字符串中删除所有'o'。你们也可以为其创建原型。你想使用类似于's.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", "");

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