我就快拿到了,但就是不太对。 我想做的就是从字符串中删除字符r。 问题是,字符串中r的实例不止一个。 但是,它总是索引4的字符(因此是第5个字符)。

示例字符串: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, '')

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

任何想法吗?


当前回答

如果您只想删除单个字符和 如果你知道你想要删除的字符的索引,你可以使用以下函数:

/**
 * Remove single character at particular index from string
 * @param {*} index index of character you want to remove
 * @param {*} str string from which character should be removed
 */
function removeCharAtIndex(index, str) {
    var maxIndex=index==0?0:index;
    return str.substring(0, maxIndex) + str.substring(index, str.length)
}

其他回答

总是有字符串函数,如果你知道你总是要删除第四个字符

str.slice(0, 4) + str.slice(5, str.length)

使用[index]位置来删除特定的字符

String.prototype.remplaceAt = function (index, distance) {
  return this.slice(0, index) + this.slice(index + distance, this.length);
};

来源:https://stackoverflow.com/users/62576/ken-white

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

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

或者,您可以使用带有全局标志的regex(如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,如果您希望使用此方法来复制charAt的工作方式,请不要从第三行索引中减去1,而是使用tmp。改为拼接(i, 1)。

也许我是个新手,但我今天遇到了这些,它们看起来都不必要地复杂。

这里有一个更简单的方法(对我来说)从字符串中删除任何你想要的东西。

function removeForbiddenCharacters(input) {
let forbiddenChars = ['/', '?', '&','=','.','"']

for (let char of forbiddenChars){
    input = input.split(char).join('');
}
return input

}

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

这是因为当char等于""时,char。Length是0,所以子字符串组合成原始字符串。按照您的代码尝试,以下将工作:

String.prototype.replaceAt = function (index, char) {
    return this.substr(0, index) + char + this.substr(index + 1);
    //   this will 'replace' the character at index with char ^
}

演示