Hvordan kan jeg fjerne et tegn fra en streng ved hjelp av Javascript?

Jeg er så nær å få dette, men det er bare ikke riktig. Alt jeg ønsker å gjøre er å fjerne tegnet r fra en streng. Problemet er at det er mer enn én forekomst av r i strengen. Det er imidlertid alltid tegnet på indeks 4 (så det 5. tegnet).

eksempel på streng: crt/r2002_2

Hva jeg vil ha: crt/2002_2

Denne erstatningsfunksjonen fjerner begge rene

mystring.replace(/r/g, '')

Produserer: ct/2002_2

Jeg prøvde denne funksjonen:

String.prototype.replaceAt = function (index, char) {
    return this.substr(0, index) + char + this.substr(index + char.length);
}
mystring.replaceAt(4, '')

Det fungerer bare hvis jeg erstatter det med et annet tegn. Det vil ikke bare fjerne det.

Noen ideer?

var mystring = "crt/r2002_2";
mystring = mystring.replace('/r','/');

vil erstatte /r med / ved hjelp av String.prototype.replace.

Alternativt kan du bruke regex med et globalt flagg (som foreslått av Erik Reppen og Sagar Gala, nedenfor) for å erstatte alle forekomster med

mystring = mystring.replace(/\/r/g, '/');

EDIT: Siden alle har det så gøy her og user1293504 ikke ser ut til å komme tilbake snart for å svare på oppklarende spørsmål, her er en metode for å fjerne det n-te tegnet fra en streng:

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

Siden user1293504 brukte den normale tellingen i stedet for en null-indeksert telling, må vi fjerne 1 fra indeksen, hvis du ønsker å bruke dette til å replikere hvordan charAt fungerer, ikke trekk 1 fra indeksen på 3. linje og bruk tmp.splice(i, 1) i stedet.

Kommentarer (1)

Det er alltid strengfunksjonene, hvis du vet at du alltid kommer til å fjerne det fjerde tegnet:

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

char.length er null. Du må legge til 1 i dette tilfellet for å hoppe over tegn.

Kommentarer (7)