我听说,JavaScript中的字符串具有不变性。
那么,我怎样才能编写一个方法来替换字符串中的某些字符?
我想要的是:
String.prototype.replaceChar(char1, char2) {
for (var i = 0; i < this.length; i++) {
if (this[i] == char1) {
this[i] = char2;
}
}
return this;
}
然后,我可以这样使用它:
'abc'.replaceChar('a','b'); // bbc
我知道它不起作用,因为字符串的不变性。
但在本机代码中,我可以使用这样的原生替换方法:
'abc'.replace(/a/g,'b');
我真的不知道如何解决这个问题。
答案 0 :(得分:6)
您可以使用以下方法:
String.prototype.replaceAll = function(search, replacement) {
return this.replace(new RegExp(search, 'g'), replacement);
};
答案 1 :(得分:1)
如果您想要一个没有正则表达式的解决方案(作为一种学习方式),您可以使用以下内容:
String.prototype.replaceChar = function(char1, char2) {
var s = this.toString();
for (var i = 0; i < s.length; i++) {
if (s[i] == char1) {
s = s.slice(0, i) + char2 + s.slice(i+1);
}
}
return s;
}
console.log('aaabaaa'.replaceChar('a', 'c'))
这个想法是你需要temp变量中字符串的这个内容,然后你需要去char-by-char,如果那个char是你要找的那个 - 你需要再次构建你的字符串。
答案 2 :(得分:1)
您也可以使用数组:
String.prototype.replaceChar = function (char1, char2) {
newstr=[];
for (i = 0; i < this.length; i++) {
newstr.push(this[i]);
if (newstr[i] == char1) {
newstr[i] = char2
}
}
return newstr.join("");
}
console.log('abca'.replaceChar('a','G'));