У меня есть строка, которая выглядит следующим образом
someString = "#3Hello there! How many #4candies did you sell today? Do have any #4candies left?"
lookupDict = {"Hello there": "#3", "candies": "#4"}
Теперь я хочу заменить все термины в строке someString
на #0
, которых нет в словаре lookupDict
. Я не могу разделить на пробел " "
, так как это приведет к тому, что некоторые термины, такие как Hello there
, будут отображаться как два разных слова Hello
и there
, и это никогда не будет соответствовать моему состоянию.
Теперь я знаю применить регулярное выражение basi c, которое добавит #0
перед каждым словом. Например, что-то вроде
let regex = /(\b\w+\b)/g;
someString = someString.replace(regex, '#0$1'));
Но это слепо добавит #0
к каждому термину и не будет искать в словаре lookupDict
.
Есть ли способ объединить регулярное выражение с поиском в словаре и назначить #0
соответственно? По сути, конечный результат будет выглядеть примерно так:
someString = "#3Hello there! #0How #0many #4candies #0did #0you #0sell #0today? #0Do #0have #0any #4candies #0left?"
Примечание. Пробелы здесь можно рассматривать как границы слов.