我想交換給定字符串內的一對子字符串的所有匹配項。如何交換字符串中的子字符串?
例如,我可能希望用「茶」替換所有出現的「咖啡」,並用「咖啡」替換所有出現的「茶」。
這是我想到的第一件事:
var newString = oldString.replace(/coffee/g, "__").replace(/tea/g, "coffee").replace(/__/g, "tea");
它工作的大部分時間,但如果我的輸入字符串包含子「__」,將無法正常工作。
我期待的一些作品,無論輸入什麼我給它,所以我想一些與此想出了:
var pieces = oldString.split("coffee");
for (var i = 0; i < pieces.length; i++)
pieces[i] = pieces[i].replace(/tea/g, "coffee");
var newString = pieces.join("tea");
它工作正常,但它是一種醜陋和冗長。我試着拿出一些更簡潔,我用內置的jQuery的map function拿出這樣的:
var newString = $.map(oldString.split("coffee"), function(piece) {
return piece.replace(/tea/g, "coffee");
}).join("tea");
這是更好,但我仍然有一種感覺,有一些精闢簡單的方法是不能出現在我的腦海裏。這裏有人知道更簡單的方法嗎?