/**
* ReplaceAll by Fagner Brack (MIT Licensed)
* Replaces all occurrences of a substring in a string
*/
String.prototype.replaceAll = function( token, newToken, ignoreCase ) {
var _token;
var str = this + "";
var i = -1;
if ( typeof token === "string" ) {
if ( ignoreCase ) {
_token = token.toLowerCase();
while( (
i = str.toLowerCase().indexOf(
_token, i >= 0 ? i + newToken.length : 0
) ) !== -1
) {
str = str.substring( 0, i ) +
newToken +
str.substring( i + token.length );
}
} else {
return this.split( token ).join( newToken );
}
}
return str;
};
alert('okay.this.is.a.string'.replaceAll('.', ' '));
Más rápido que usar expresiones regulares ...
EDITAR:
Quizás en el momento en que hice este código no usé jsperf. Pero al final, tal discusión no tiene sentido, la diferencia de rendimiento no vale la legibilidad del código en el mundo real, por lo que mi respuesta sigue siendo válida, incluso si el rendimiento difiere del enfoque de expresiones regulares.
EDIT2:
he creado una lib que te permite hacer esto usando una interfaz fluida:
replace('.').from('okay.this.is.a.string').with(' ');
Ver https://github.com/FagnerMartinsBrack/str-replace .