/**
* 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('.', ' '));
Schneller als mit Regex...
EDITAR:
Vielleicht habe ich zu der Zeit, als ich diesen Code erstellt habe, nicht jsperf verwendet. Aber am Ende ist eine solche Diskussion völlig sinnlos, der Leistungsunterschied ist die Lesbarkeit des Codes in der realen Welt nicht wert, so dass meine Antwort immer noch gültig ist, auch wenn die Leistung unterscheidet sich von der Regex-Ansatz.
EDIT2:
Ich habe eine Bibliothek erstellt, mit der Sie dies über eine fließende Schnittstelle tun können:
replace('.').from('okay.this.is.a.string').with(' ');
Ver https://github.com/FagnerMartinsBrack/str-replace .