长话短说
如何返回包含子字符串的字符串,但前提是不被字母包围?
语境
我正在创建一个虚构语言的翻译工具。我有一个存储在 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”嗨ng”。由于某些对象值包含以逗号分隔的单词,因此我需要一种方法来仅提取未被字母包围的单词。
期望的结果
如果我输入“hi”,将不会返回“thing”的翻译,但会返回“hi,hello,goodday”的翻译>”或“你好,你好”将被返回。
最佳答案
您想匹配字符串中的整个单词吗?您可以为此目的使用正则表达式:
new RegExp("\\b" + lookup + "\\b").test(text)
详情请看这里: whole word match in javascript
关于JavaScript - 检查给定的子字符串是否被字母包围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34887963/