/**
* 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('.', ' '));
Normal ifade kullanmaktan daha hızlı ...
EDIT:
Belki de bu kodu yaptığım zaman jsperf kullanmadım. Ancak sonuçta bu tartışma tamamen anlamsızdır, performans farkı gerçek dünyada kodun okunabilirliğine değmez, bu nedenle performans normal ifade yaklaşımından farklı olsa bile cevabım hala geçerlidir.
EDIT2:
Akıcı bir arabirim kullanarak bunu yapmanızı sağlayan bir lib oluşturdum:
replace('.').from('okay.this.is.a.string').with(' ');
Bkz. Https://github.com/FagnerMartinsBrack/str-replace .