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