簡體   English   中英

如何在JavaScript中編寫String的替換方法?

[英]How can I write a replace method for String in JavaScript?

我聽說,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');

我真的不知道如何解決這個問題。

您可以使用以下方法:

String.prototype.replaceAll = function(search, replacement) {
    return this.replace(new RegExp(search, 'g'), replacement);
};

如果您想要不使用正則表達式的解決方案(作為一種學習方法),則可以使用以下方法:

 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是您要查找的字符,則需要再次構建字符串。

您也可以使用數組:

 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')); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM