@lagudal

Как найти и заменить несколько вхождений в тексте одним скриптом?

есть вот такая конструкция, позволяющая на лету найти и заменить определенное вхождение в html - слово или предложение - на другое.
$("body").children().each(function() {
    $(this).html($(this).html().replace(/old text/g,"new text"));
  });

Теперь если таких замен нужно сделать с десяток - т.е. есть 10 вхождений которые нужно заменить на 10 новых, при этом конечно нужно четкое соответствие, что на что будет меняться.
Как решить эту задачу короче, чем 10 раз записывать эту конструкцию?
  • Вопрос задан
  • 162 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const replacements = [
  [ 'вот это надо заменить', 'вот на это' ],
  [ 'а это заменить', 'на вот это' ],
];

$elements.html((i, html) => {
  return replacements.reduce((acc, n) => acc.replace(RegExp(n[0], 'g'), n[1]), html);
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
neuotq
@neuotq
Прокрастинация
Легче всего, чтобы не парится.
Примерно так, писал без тестирования, но идея понятная надеюсь
const replacePairs= {'было1': 'стало1', 'было2': 'стало2', 'было3': 'стало3'};
$("body").children().each(function() {
  let currentNode = $(this);
  for (const pair in replacePairs) {
     currentNode.html(currentNode.html().replace(/`${pair}`/g, `${replacePairs[pair]}`));
  }
});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы