/**
* 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('.', ' '));
Nhanh hơn sử dụng regex ...
EDIT:
Có thể tại thời điểm tôi thực hiện mã này, tôi đã không sử dụng jsperf. Nhưng cuối cùng, cuộc thảo luận như vậy là hoàn toàn vô nghĩa, sự khác biệt về hiệu năng không xứng đáng với mức độ dễ đọc của mã trong thế giới thực, vì vậy câu trả lời của tôi vẫn hợp lệ, ngay cả khi hiệu suất khác với cách tiếp cận regex.
EDIT2:
Tôi đã tạo một lib cho phép bạn thực hiện điều này bằng giao diện lưu loát:
replace('.').from('okay.this.is.a.string').with(' ');
Xem https://github.com/FagnerMartinsBrack/str-replace .