/**
* 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('.', ' '));
Lebih cepat daripada menggunakan regex ...
EDIT:
Mungkin pada saat saya melakukan kode ini saya tidak menggunakan jsperf. Tetapi pada akhirnya diskusi seperti itu sama sekali tidak ada gunanya, perbedaan kinerja tidak sebanding dengan keterbacaan kode di dunia nyata, jadi jawaban saya masih valid, bahkan jika kinerjanya berbeda dari pendekatan regex.
EDIT2:
Saya telah membuat lib yang memungkinkan Anda melakukan ini menggunakan antarmuka yang lancar:
replace('.').from('okay.this.is.a.string').with(' ');
Lihat https://github.com/FagnerMartinsBrack/str-replace .