2018/06/26

[JS] Replace 字串內所有符合的舊字串

在 Javascript 中,若想要將一段字串內的特定字串替換成新的字串,很直覺會使用
replace()
方法這麼處理:
var sentence = 'Felix, Lanny, Felix, Felix, John';
console.log(sentence.replace('Felix', 'Vincent'));
//結果: Vincent, Lanny, Felix, Felix, John

結果發現:只有第一個符合的舊字串被取代
若要像 C# 般將句子內所有符合的舊字串都被取代,需要搭配正規式處理:
//方法1
var newSentence = sentence.replace(/Felix/g, "Vincent");
console.log(newSentence);
//結果: Vincent, Lanny, Vincent, Vincent, John

//方法2
var newSentence2 = sentence.replace(new RegExp("Felix", "g"), "Marry");
console.log(newSentence2);
//結果: Marry, Lanny, Marry, Marry, John;


好懶~那就寫成擴充方法吧!

若不想每次遇到以上需求時都得寫成這麼複雜的運算式 (懶~哈),可將上述方法寫成
String
擴充方法:
String.prototype.replaceAll = function(oldString, newString) {
    var target = this;
    return target.replace(new RegExp(oldString, 'g'), newString);
};

這麼一來,以後只要使用
sentence.replaceAll('Felix', 'Peter')
就搞定囉。

  參考來源:

沒有留言 :

張貼留言

注意:只有此網誌的成員可以留言。