Я дуже близький до того, щоб отримати це, але це просто неправильно.
Все, що я хотів би зробити, це видалити символ 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)
замість цього.
Завжди є рядкові функції, якщо ви знаєте, що завжди збираєтеся видалити четвертий символ:
str.slice(0, 4) + str.slice(5, str.length))
return this.substr(0, index) + char + this.substr(index + char.length);
char.length
дорівнює нулю. У цьому випадку потрібно додати 1
, щоб пропустити символ.