Kaip pašalinti simbolį iš eilutės naudojant "Javascript"?

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).

Komentarai (1)

Jei žinote, kad visada ketinate pašalinti ketvirtąjį simbolį, visada galite pasinaudoti eilutės funkcijomis:

str.slice(0, 4) + str.slice(5, str.length))
Komentarai (2)
return this.substr(0, index) + char + this.substr(index + char.length);

char.length yra nulis. Šiuo atveju, norint praleisti simbolį, reikia pridėti 1.

Komentarai (7)