Функция замены части слова, как заставить заменить целое слово только гугл скриптом

У меня есть функция, которая находит и заменяет из массива значений Find Replace.

как настроено, он заменяет частичные варды

Мне нужно заменить только слово whole.

Как заменить только целые слова?

function test_n() {
let  arr= [
 [ 'Collins, Matthew James'],
 [ 'Collins, Matthew'],
 [ 'Collins, Matthew J'],
 [ 'Collins, M. J.'],
 [ 'Collins, M.J.'],
 [ 'Collins, M.'],
 [ 'Collins, M.J'],
 [ 'Collins, M'],
 [ 'Collins, M J']
]

 let RgX = [
 [ 'Collins, Matthew James', 'Collins, Matthew' ],
 [ 'Collins, Matthew', 'Collins, Matthew' ],
 [ 'Collins, Matthew J', 'Collins, Matthew' ],
 [ 'Collins, M. J.', 'Collins, Matthew' ],
 [ 'Collins, M.J.', 'Collins, Matthew' ],
 [ 'Collins, M.', 'Collins, Matthew' ],
 [ 'Collins, M.J', 'Collins, Matthew' ],
 [ 'Collins, M', 'Collins, Matthew' ],
 [ 'Collins, M J', 'Collins, Matthew' ]
]

//RgX[0] =to_replace value
//RgX[1] = replace_with value

arr = processValues(arr, RgX)
console.info(arr)
}


function processValues(values, replaceTable) {
  //let replaceTable = RgX;
  return values.map(row =>
    row.map(c => c 
     ? replaceTable.reduce(
       (curString, tableEntry) => curString.replaceAll(...tableEntry)
       , c) : '', ""));
}

я получаю результат

[ [ 'Collins, Matthewatthew' ],
  [ 'Collins, Matthewatthew' ],
  [ 'Collins, Matthewatthew' ],
  [ 'Collins, Matthewatthew' ],
  [ 'Collins, Matthewatthew' ],
  [ 'Collins, Matthewatthew' ],
  [ 'Collins, MatthewatthewJ' ],
  [ 'Collins, Matthew' ],
  [ 'Collins, Matthew J' ] ]

Мне нужно

[ [ 'Collins, Matthew' ],
  [ 'Collins, Matthew' ],
  [ 'Collins, Matthew' ],
  [ 'Collins, Matthew' ],
  [ 'Collins, Matthew' ],
  [ 'Collins, Matthew' ],
  [ 'Collins, Matthew' ],
  [ 'Collins, Matthew' ],
  [ 'Collins, Matthew' ] ]

Я попытался изменить это.

(curString, tableEntry) => curString.replaceAll(...tableEntry) к (curString, tableEntry) => curString.replaceAll(new RegExp('\\b' + tableEntry[0] + '//b','g'),tableEntry[1])

но эта замена не влияет на вывод; выход = вход

Возможно, вам будет проще пользоваться textFinder

Cooper 10.02.2023 19:14

Я думал, что textFinder работает только с диапазонами, а не с массивами

Einarr 10.02.2023 19:18

Вы хотели '\\b', а не '//b'.

Wiktor Stribiżew 10.02.2023 20:25

Почему бы не написать один паттерн .*\bCollins, (?:Matthew(?: James)?\b|M\.?(?: ?J\.?)?)(?!\S).* и заменить на Collins, Matthewregex101.com/r/fZ5bt9/1

The fourth bird 10.02.2023 20:33

Поэтому я исправил неверный '//b', но это все еще не работает для всех записей, которые заканчиваются на . Пример: 'Collins, Matthew J. он возвращает 'Collins, Matthew J'

Einarr 10.02.2023 21:10

Четвертая птица, Мэтью, — это всего лишь один вариант имени из многих, поэтому мне нужно общее решение.

Einarr 10.02.2023 21:16
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
6
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Замените функцию processValues на:

function processValues(values, replaceTable) {
  return values.map(name => replaceTable.find(
    fromTo => fromTo[0] == name
  )).map(fromTo => fromTo ? fromTo[1] : undefined);
}

Примечания:

  • .find() находит имя в таблице и возвращает массив fromTo
  • второй .map() изменяет массив fromTo на значение "to"

Другие вопросы по теме