Esu taip arti to, kad tai gausiu, bet tai tiesiog negerai.
Norėčiau tik pašalinti simbolį r
iš eilutės.
Problema ta, kad eilutėje yra daugiau nei vienas r
egzempliorius.
Tačiau tai visada yra 4 indekso simbolis (taigi, penktasis simbolis).
pavyzdys eilutė: crt/r2002_2
Ko aš noriu: crt/2002_2
Ši pakeitimo funkcija pašalina abu r
mystring.replace(/r/g, '')
Gaunama: ct/2002_2
Išbandžiau šią funkciją:
String.prototype.replaceAt = function (index, char) {
return this.substr(0, index) + char + this.substr(index + char.length);
}
mystring.replaceAt(4, '')
Ji veikia tik tada, kai jį pakeičiu kitu simboliu. Ji jo tiesiog nepašalina.
Ką galvojate?
var mystring = "crt/r2002_2";
mystring = mystring.replace('/r','/');
pakeis /r
į /
naudodamas String.prototype.replace
.
Arba galite naudoti regex su globalia žyme (kaip siūlo Erik Reppen & Sagar Gala, toliau), kad pakeistumėte visus pasikartojimus su
mystring = mystring.replace(/\/r/g, '/');
EDIT: Kadangi visiems čia taip smagu, o user1293504, atrodo, greitai negrįš atsakyti į patikslinančius klausimus, pateikiame N-tojo simbolio pašalinimo iš eilutės metodą:
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));
Kadangi vartotojas 1293504 naudojo įprastą skaičiavimą, o ne skaičiavimą su nuliniu indeksu, turime iš indekso atimti 1. Jei norite naudoti šį metodą, norėdami atkartoti, kaip veikia charAt
, neatimkite 1 iš indekso 3 eilutėje, o naudokite tmp.splice(i, 1)
.
return this.substr(0, index) + char + this.substr(index + char.length);
char.length
yra nulis. Šiuo atveju, norint praleisti simbolį, reikia pridėti 1
.