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

У меня есть функция, которая находит и заменяет из массива значений 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, Matthew regex101.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
Руководство для начинающих по веб-разработке на React.js
Руководство для начинающих по веб-разработке на React.js
Веб-разработка - это захватывающая и постоянно меняющаяся область, которая постоянно развивается благодаря новым технологиям и тенденциям. Одним из...
Калькулятор CGPA 12 для семестра
Калькулятор CGPA 12 для семестра
Чтобы запустить этот код и рассчитать CGPA, необходимо сохранить код как HTML-файл, а затем открыть его в веб-браузере. Для этого выполните следующие...
Как собрать/развернуть часть вашего приложения Angular
Как собрать/развернуть часть вашего приложения Angular
Вам когда-нибудь требовалось собрать/развернуть только часть вашего приложения Angular или, возможно, скрыть некоторые маршруты в определенных средах?
Оптимизация React Context шаг за шагом в 4 примерах
Оптимизация React Context шаг за шагом в 4 примерах
При использовании компонентов React в сочетании с Context вы можете оптимизировать рендеринг, обернув ваш компонент React в React.memo сразу после...
Интервьюер: Почему '[] instanceof Object' возвращает "true"?
Интервьюер: Почему '[] instanceof Object' возвращает "true"?
Все мы знаем, что [] instanceof Array возвращает true, но почему [] instanceof Object тоже возвращает true?
Абстрактное синтаксическое дерево (AST) и как оно работает с ReactJS
Абстрактное синтаксическое дерево (AST) и как оно работает с ReactJS
Абстрактное синтаксическое дерево (AST) - это древовидная структура данных, которая представляет структуру и иерархию исходного кода на языке...
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"

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