Я попробовал некоторые из этих предложений после того, как понял, что реализация, которую я написал об этом, вероятно, около 10 лет назад, на самом деле не работала полностью (неприятная ошибка в работе системы, о которой давно забыли, не всегда так ?!) ... я заметил, что те, которые я пробовал (я не пробовал их все), имели ту же проблему, что и моя, то есть они не заменяли КАЖДЫЙ случай, только первый, по крайней мере для моего контрольный пример получения "test .... txt" до "test.txt" путем замены ".." на "." ... может быть, я пропустил так regex ситуацию? Но я отвлекся ...
Итак, я переписал свою реализацию следующим образом. Это чертовски просто, хотя я подозреваю, что это не самое быстрое, но я также не думаю, что разница будет иметь значение с современными двигателями JS, если, конечно, вы не делаете это в узком кругу, но это всегда имеет место для всего ...
function replaceSubstring(inSource, inToReplace, inReplaceWith) {
var outString = inSource;
while (true) {
var idx = outString.indexOf(inToReplace);
if (idx == -1) {
break;
}
outString = outString.substring(0, idx) + inReplaceWith +
outString.substring(idx + inToReplace.length);
}
return outString;
}
Надеюсь, это кому-нибудь поможет!