Hogyan tudok egy karaktert eltávolítani egy karakterláncból Javascript segítségével?

Annyira közel vagyok ahhoz, hogy megszerezzem ezt, de ez egyszerűen nem jó. Csak az "r" karaktert szeretném eltávolítani egy karakterláncból. A probléma az, hogy az "r" több példányban is szerepel a karakterláncban. Ez azonban mindig a 4-es indexű karakter (tehát az 5. karakter).

példa string: crt/r2002_2_2

Amit akarok: crt/2002_2

Ez a cserefüggvény eltávolítja mind az r, mind a

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

Eredménye: ct/2002_2

Ezt a függvényt próbáltam ki:

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

Csak akkor működik, ha más karakterrel helyettesítem. Egyszerűen nem távolítja el.

Valami ötlet?

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

a [/r-t /-vel helyettesíti a String.prototype.replace segítségével.

Alternatívaként használhatod a regexet egy globális flaggel (ahogy azt Erik Reppen & Sagar Gala javasolta, lentebb), hogy minden előfordulást kicserélj a következővel

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

EDIT: Mivel itt mindenki olyan jól szórakozik, és úgy tűnik, hogy user1293504 nem jön vissza egyhamar, hogy válaszoljon a tisztázó kérdésekre, íme egy módszer az N-edik karakter eltávolítására egy karakterláncból:

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

Mivel a user1293504 a nullás indexű számolás helyett a normál számolást használta, nekünk've el kell távolítanunk az indexből 1-et, ha ezt akarod használni a charAt működésének megismétlésére, akkor ne vonj le 1-et az indexből a 3. sorban, hanem használd helyette a tmp.splice(i, 1)t.

Kommentárok (1)

Mindig ott vannak a karakterláncfüggvények, ha tudod, hogy mindig el fogod távolítani a negyedik karaktert:

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

char.length nulla. Ebben az esetben 1 kell hozzáadni, hogy kihagyjuk a karaktert.

Kommentárok (7)