TL; DR
如何返回包含子字符串的字符串,但仅当不是包围字母时?
CONTEXT
我正在创建一种虚构语言的翻译工具。我有一个存储在JSON对象中的词典,并使用以下代码将输入中的每个单词翻译为输出的另一个单词:
//loop through lexicon and if inputted word is in values, return corresponding key -> NEED A WAY TO GET
for(var word in inputArray){
for(var key in lexicon){
var value = lexicon[key];
var term = inputArray[word];
// check if the term appears as a value in the selected lexicon
if(value.indexOf(term) !== -1){
// if key contains commas, then take only what's before the first comma
if(key.indexOf(',') !== -1){
match = key.substring(0, key.indexOf(','));
// if there are no commas, return the whole key
} else{
match = key;
}
outputArray.push(match)
break;
}
}
}
问题
虽然此方法适用于较长的单词,但较短的单词如" hi "将与词典中找到的第一个值匹配,这可能是另一个词,例如" t hi ng"。由于某些对象值包含以逗号分隔的单词,因此我需要一种方法来仅拉出未被字母包围的单词。
期望的结果
" 事物的翻译"如果我输入" hi ",则不会被退回,但是" hi,hello,goodday "的翻译或" 你好,你好"将被退回。
答案 0 :(得分:2)
你想匹配字符串中的整个单词吗?您可以为此目的使用正则表达式:
new RegExp("\\b" + lookup + "\\b").test(text)
请点击此处了解更多详情: whole word match in javascript