Javascript kullanarak bir karakteri bir dizeden nasıl kaldırabilirim?

Bunu almaya çok yaklaştım, ama bu doğru değil. Tek yapmak istediğim bir dizeden r karakterini kaldırmak. Sorun şu ki, dizede birden fazla r örneği var. Ancak, her zaman dizin 4'teki karakterdir (yani 5. karakter).

örnek dize: crt/r2002_2

Ne istiyorum: crt/2002_2

Bu değiştirme işlevi hem r

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

Üretir: ct/2002_2

Bu işlevi denedim:

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

Yalnızca başka bir karakterle değiştirirsem çalışıyor. Basitçe kaldırmayacaktır.

Bir fikrin var mı?

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

String.prototype.replace](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace) kullanarak/ryerine/` yazacaktır.

Alternatif olarak regex'i global bir bayrakla kullanabilirsiniz (Erik Reppen & Sagar Gala, aşağıda önerildiği gibi) tüm oluşumları

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

EDIT: Herkes burada çok eğlendiğinden ve user1293504 açıklayıcı soruları yanıtlamak için yakın zamanda geri dönmeyecek gibi göründüğünden, işte bir dizeden N. karakteri kaldırmak için bir yöntem:

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

user1293504 sıfır indeksli bir sayım yerine normal sayımı kullandığından, indeksten 1'i çıkarmamız gerekir, eğer bunu charAt'ın nasıl çalıştığını kopyalamak için kullanmak istiyorsanız, 3. satırdaki indeksten 1'i çıkarmayın ve bunun yerinetmp.splice(i, 1)` kullanın.

Yorumlar (1)

Her zaman dördüncü karakteri kaldıracağınızı biliyorsanız, her zaman dize işlevleri vardır:

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

char.lengthsıfırdır. Bu durumda karakteri atlamak için1` eklemeniz gerekir.

Yorumlar (7)