Як видалити символ з рядка за допомогою Javascript?

Я дуже близький до того, щоб отримати це, але це просто неправильно. Все, що я хотів би зробити, це видалити символ 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, '')

Вона працює, тільки якщо я заміню її на інший символ. Вона не буде просто видаляти його.

Якісь думки?

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 з індексу в 3-му рядку і використовуйте 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)