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