Как мога да премахна символ от низ с помощта на Javascript?

Толкова съм близо до това да го получа, но просто не е наред. Всичко, което искам да направя, е да премахна символа r от един низ. Проблемът е, че в низа има повече от един случай на r. Въпреки това той винаги е символът с индекс 4 (петият символ).

Пример за низ: 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, '')

Работи само ако го заменя с друг символ. Тя не го премахва просто така.

Някакви идеи?

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.splice(i, 1).

Коментари (1)

Ако знаете, че винаги ще премахвате четвъртия символ, винаги можете да използвате функциите за низ:

str.slice(0, 4) + str.slice(5, str.length))
Коментари (2)
return this.substr(0, index) + char + this.substr(index + char.length);

char.length е нула. В този случай трябва да добавите 1, за да пропуснете символа.

Коментари (7)