Jeg er så tæt på at få det, men det er bare ikke rigtigt.
Det eneste jeg gerne vil gøre er at fjerne tegnet r
fra en streng.
Problemet er, at der er mere end ét tilfælde af r
i strengen.
Det er dog altid tegnet ved indeks 4 (altså det 5. tegn).
eksempel streng: crt/r2002_2`.
Hvad jeg ønsker: crt/2002_2
.
Denne erstatningsfunktion fjerner både r
og r
.
mystring.replace(/r/g, '')
Giver: ct/2002_2
.
Jeg har prøvet denne funktion:
String.prototype.replaceAt = function (index, char) {
return this.substr(0, index) + char + this.substr(index + char.length);
}
mystring.replaceAt(4, '')
Det virker kun, hvis jeg erstatter det med et andet tegn. Den vil ikke bare fjerne det.
Nogen tanker?
var mystring = "crt/r2002_2";
mystring = mystring.replace('/r','/');
erstatter /r
med /
ved hjælp af String.prototype.replace
.
Alternativt kan du bruge regex med et globalt flag (som foreslået af Erik Reppen & Sagar Gala, nedenfor) for at erstatte alle forekomster med
mystring = mystring.replace(/\/r/g, '/');
EDIT: Eftersom alle har det så sjovt her og user1293504 ikke ser ud til at komme tilbage i den nærmeste fremtid for at besvare afklarende spørgsmål, er her en metode til at fjerne det N-te tegn 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));
Da user1293504 brugte den normale optælling i stedet for en nul-indekseret optælling, er vi nødt til at fjerne 1 fra indekset, hvis du ønsker at bruge dette til at replikere hvordan charAt
virker, skal du ikke trække 1 fra indekset på 3. linje og bruge tmp.splice(i, 1)
i stedet.
return this.substr(0, index) + char + this.substr(index + char.length);
char.length
er nul. Du skal tilføje 1
i dette tilfælde for at springe et tegn over.