我想交换给定字符串内的一对子字符串的所有匹配项。如何交换字符串中的子字符串?
例如,我可能希望用“茶”替换所有出现的“咖啡”,并用“咖啡”替换所有出现的“茶”。
这是我想到的第一件事:
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");
这是更好,但我仍然有一种感觉,有一些精辟简单的方法是不能出现在我的脑海里。这里有人知道更简单的方法吗?