Я пытаюсь поменять местами все вхождения пары подстрок в данной строке.
Например, я могу захотеть заменить все вхождения «coffee» на «tea» и все вхождения «tea»"with" coffee ".
Это первое, о чем я подумал:
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");
Работает нормально, ноэто отчасти уродливо и многословно.Я попытался придумать что-то более лаконичное и использовал функцию map , встроенную в jQuery, чтобы придумать следующее:
var newString = $.map(oldString.split("coffee"), function(piece) {
return piece.replace(/tea/g, "coffee");
}).join("tea");
Это лучше, но у меня все еще есть чувство, чтоэто какой-то блестяще простой метод, который мне не приходит в голову.Кто-нибудь здесь знает более простой способ?