Kā no virknes noņemt rakstzīmi, izmantojot Javascript?

Es esmu tik tuvu tam, lai to saņemtu, bet tas vienkārši nav pareizi. Viss, ko es gribētu darīt, ir noņemt rakstzīmi r no virknes. Problēma ir tāda, ka virknē ir vairāk nekā viens r gadījums. Tomēr tas vienmēr ir 4. indeksa rakstzīme (tātad 5. rakstzīme).

piemērs virkne: crt/r2002_2.

Ko es gribu: crt/2002_2

Šī aizstāšanas funkcija noņem abus r

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

Rezultāts: ct/2002_2

Es izmēģināju šo funkciju:

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

Tas darbojas tikai tad, ja es to aizvietoju ar citu rakstzīmi. Tā to vienkārši neizdzēš.

Kādas domas?

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

aizstās /r ar /, izmantojot String.prototip.replace.

Kā alternatīvu var izmantot regex ar globālo karodziņu (kā ierosināts Erik Reppen & amp; Sagar Gala, zemāk), lai aizstātu visus gadījumus ar

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

EDIT: Tā kā visiem šeit ir tik jautri un user1293504, šķiet, drīzumā neatgriezīsies, lai atbildētu uz precizējošiem jautājumiem, šeit ir metode, kā no rindas noņemt N-to rakstzīmi:

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

Tā kā lietotājs 1293504 izmantoja parasto skaitīšanu, nevis nulles indeksēto skaitīšanu, mums no indeksa ir jāatņem 1. Ja vēlaties to izmantot, lai atkārtotu, kā darbojas charAt, neatņemiet 1 no indeksa 3. rindā un tā vietā izmantojiet tmp.splice(i, 1).

Komentāri (1)

Vienmēr ir virknes funkcijas, ja zināt, ka vienmēr gatavojaties noņemt ceturto rakstzīmi:

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

char.length ir nulle. Šajā gadījumā ir jāpievieno 1, lai izlaistu rakstzīmi.

Komentāri (7)