如何使用JavaScript从字符串中删除字符?

2022-08-29 23:09:12

我离得到这个很近,但这是不对的。我想做的就是从字符串中删除该字符。问题是,字符串中有多个 实例。但是,它始终是索引 4 处的字符(因此是第 5 个字符)。rr

示例字符串: crt/r2002_2

我想要什么: crt/2002_2

此替换函数将同时删除r

mystring.replace(/r/g, '')

生产:ct/2002_2

我尝试了这个功能:

String.prototype.replaceAt = function (index, char) {
    return this.substr(0, index) + char + this.substr(index + char.length);
}
mystring.replaceAt(4, '')

只有当我用另一个字符替换它时,它才有效。它不会简单地删除它。

有什么想法吗?


答案 1
var mystring = "crt/r2002_2";
mystring = mystring.replace('/r','/');

将使用 String.prototype.replace 替换/r/

或者,您可以使用带有全局标志的正则表达式(如下面的 Erik Reppen & Sagar Gala 所建议的那样)将所有匹配项替换为

mystring = mystring.replace(/\/r/g, '/');

编辑:由于每个人都在这里玩得很开心,并且user1293504似乎不会很快回来回答澄清问题,因此这里有一个从字符串中删除第N个字符的方法:

String.prototype.removeCharAt = function (i) {
    var tmp = this.split(''); // convert to an array
    tmp.splice(i - 1 , 1); // remove 1 element from the array (adjusting for non-zero-indexed counts)
    return tmp.join(''); // reconstruct the string
}

console.log("crt/r2002_2".removeCharAt(4));

由于 user1293504 使用正常计数而不是零索引计数,因此我们必须从索引中删除 1,如果您希望使用它来复制工作方式,请不要从第 3 行的索引中减去 1 并改用。charAttmp.splice(i, 1)


答案 2

一个简单的函数式javascript方式将是

mystring = mystring.split('/r').join('/')

简单,快速,可全局替换,无需功能或原型