Como posso remover um caractere de uma string usando Javascript?

Estou tão perto de conseguir isto, mas não está... 39; não está certo. Tudo que eu gostaria de fazer era remover o caracter r de uma string. O problema é que existe mais de uma instância de r na string. Entretanto, é sempre o caractere no índice 4 (então o 5º caractere).

exemplo de cadeia: crt/r2002_2

O que eu quero: crt/2002_2

Esta função de substituição remove ambos os `r'.

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

Produz: ct/2002_2

Eu tentei esta função:

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

Só funciona se eu o substituir por outro personagem. Ele não vai simplesmente removê-lo.

Alguma ideia?

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

irá substituir /r por / utilizando String.prototype.replace.

Alternativamente, você poderia usar o regex com uma bandeira global (como sugerido por Erik Reppen & Sagar Gala, abaixo) para substituir todas as ocorrências por

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

EDIT: Como todos's estão se divertindo tanto aqui e user1293504 doesn't parecem estar voltando em breve para responder perguntas esclarecedoras, aqui's um método para remover o Nth character de uma string:

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

Como o usuário1293504 utilizou a contagem normal em vez de uma contagem indexada a zero, nós'temos que remover 1 do índice, se você quiser utilizar isto para replicar como charAt funciona, não subtraia 1 do índice na 3ª linha e utilize tmp.splice(i, 1) em vez disso.

Comentários (1)

Lá's sempre as funções da string, se você conhece você'vão sempre remover o quarto caractere:

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

O "comprimento da carta" é zero. Você precisa adicionar 1 neste caso para pular o caractere.

Comentários (7)