Jestem tak blisko uzyskania tego, ale to po prostu nie jest'w porządku.
Wszystko, co chciałbym zrobić, to usunąć znak r
z łańcucha.
Problem polega na tym, że jest więcej niż jedna instancja r
w łańcuchu.
Jednakże, zawsze jest to znak na indeksie 4 (więc 5 znak).
przykładowy łańcuch: crt/r2002_2
Co chcę: crt/2002_2
.
Ta funkcja replace usuwa oba r
.
mystring.replace(/r/g, '')
Tworzy: ct/2002_2
.
Próbowałem tej funkcji:
String.prototype.replaceAt = function (index, char) {
return this.substr(0, index) + char + this.substr(index + char.length);
}
mystring.replaceAt(4, '')
Działa to tylko wtedy, gdy zastąpię go inną postacią. Nie będzie to po prostu usunięcie go.
Jakieś pomysły?
var mystring = "crt/r2002_2";
mystring = mystring.replace('/r','/');
zastąpi /r
na /
używając String.prototype.replace
.
Alternatywnie można użyć regex z globalną flagą (jak sugeruje Erik Reppen & Sagar Gala, poniżej), aby zastąpić wszystkie wystąpienia z
mystring = mystring.replace(/\/r/g, '/');
EDIT: Ponieważ wszyscy się tu tak dobrze bawią, a user1293504 nie wydaje się wracać w najbliższym czasie, aby odpowiedzieć na wyjaśniające pytania, oto metoda usuwania N-tego znaku z łańcucha:
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));
Ponieważ user1293504 użył normalnego liczenia zamiast zerowego indeksu, musimy usunąć 1 z indeksu, jeśli chcesz użyć tego do replikacji działania charAt
nie odejmuj 1 z indeksu w 3 linii i użyj tmp.splice(i, 1)
zamiast tego.
return this.substr(0, index) + char + this.substr(index + char.length);
char.length
wynosi zero. Musisz dodać 1
w tym przypadku, aby pominąć znak.