我就快拿到了,但就是不太对。 我想做的就是从字符串中删除字符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, '')

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

任何想法吗?


当前回答

这是对简单答案的改进(省略长度)

s.slice(0, 4) + s.slice(5)

Let s = "crt/r2002_2"; 设o = s.slice(0,4) + s.slice(5); let delAtIdx = (s, i) => s.slice(0, i) + s.slice(i + 1);//删除索引I处的字母 console.log (o); console.log (delAtIdx (s, 4));

其他回答

最短的方法是使用拼接

var inputString = "abc";
// convert to array and remove 1 element at position 4 and save directly to the array itself
let result = inputString.split("").splice(3, 1).join();
console.log(result);
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

}

你可以这样使用:if (str[4] === 'r') str = str.slice(0,4) + str.slice(5)

解释:

If (str[4] === 'r') 检查第5个字符是否为“r” str.slice (0, 4) 对字符串进行切片,以获得'r'之前的所有内容 + str.slice (5) 添加字符串的其余部分。

缩小:s = s[4] = =‘r’吗? s.slice (0, 4) + s.slice (5): s[37个字节!] 演示:

function remove5thR (s) s = s[4] =‘r’? s。切片(0.4)+ s。切片(5):s; 控制台日志(s);//输出日志 的 移除5thr ('crt/r2002_2') // > 'crt/2002_2' remove5thR(“crt | r2002_2 ') // > ' crt | 2002_2” 删除5thr(“rrrrr”)// >“rrrr” 删除5thr(“RRRRR”)// >“RRRRR”(不改变)

这个问题有很多应用。调整@simpleigh解决方案,使其更易于复制/粘贴:

function removeAt( str1, idx) {
  return str1.substr(0, idx) + str1.substr(idx+1)
}
console.log(removeAt('abbcdef', 1))  // prints: abcdef