String.prototype.replaceAll = function(search, replace, ignoreCase) {
if (ignoreCase) {
var result = [];
var _string = this.toLowerCase();
var _search = search.toLowerCase();
var start = 0, match, length = _search.length;
while ((match = _string.indexOf(_search, start)) >= 0) {
result.push(this.slice(start, match));
start = match + length;
}
result.push(this.slice(start));
} else {
result = this.split(search);
}
return result.join(replace);
}
用法:
alert('Bananas And Bran'.replaceAll('An', '(an)'));
-5
String.prototype.replaceAll = function(character,replaceChar){
var word = this.valueOf();
while(word.indexOf(character) != -1)
word = word.replace(character,replaceChar);
return word;
}
0
这是replaceAll的另一个实现 . 希望它可以帮助某人 .
String.prototype.replaceAll = function (stringToFind, stringToReplace) {
if (stringToFind === stringToReplace) return this;
var temp = this;
var index = temp.indexOf(stringToFind);
while (index != -1) {
temp = temp.replace(stringToFind, stringToReplace);
index = temp.indexOf(stringToFind);
}
return temp;
};
然后你可以使用它:
var myText = "My Name is George"; var newText = myText.replaceAll("George","Michael");
691
示例:我想将所有双引号(“)替换为单引号(')然后代码将是这样的
var str= "\"Hello\""
var regex = new RegExp('"', 'g');
str = str.replace(regex, '\'');
console.log(str); // 'Hello'
4
@ scripto的更简洁,没有 prototype :
function strReplaceAll(s, stringToFind, stringToReplace) {
if (stringToFind === stringToReplace) return s;
for (let index = s.indexOf(stringToFind); index != -1; index = s.indexOf(stringToFind))
s = s.replace(stringToFind, stringToReplace);
return s;
}
14 回答
我在点上添加双反斜杠以使其工作 . 欢呼 .
您需要转义
.
,因为它在正则表达式中具有"an arbitrary character"的含义 .还有一个易于理解的解决方案:)
比使用正则表达式更快......
EDIT:
也许在我做这个代码的时候我没有使用过jsperf . 但最终这种讨论毫无意义,性能差异不值得现实世界中代码的易读性,所以即使性能与正则表达式方法不同,我的答案仍然有效 .
EDIT2:
我创建了一个lib,允许您使用流畅的界面执行此操作:
见https://github.com/FagnerMartinsBrack/str-replace .
对于这个简单的场景,我还建议使用javascript中内置的方法 .
你可以试试这个:
问候
这更简洁/可读,应该比Fagner Brack发布的更好(toLowerCase不在循环中执行):
用法:
这是replaceAll的另一个实现 . 希望它可以帮助某人 .
然后你可以使用它:
var myText = "My Name is George";
var newText = myText.replaceAll("George","Michael");
示例:我想将所有双引号(“)替换为单引号(')然后代码将是这样的
@ scripto的更简洁,没有
prototype
:以下是它如何叠加:http://jsperf.com/replace-vs-split-join-vs-replaceall/68
您可以使用RegExp javasscript对象替换所有出现的任何字符串/字符 .
这是代码,