JavaScript - 检查给定的子字符串是否被字母包围

时间:2016-01-19 22:14:26

标签: javascript arrays json regex string

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 "的翻译或" 你好,你好"将被退回。

1 个答案:

答案 0 :(得分:2)

你想匹配字符串中的整个单词吗?您可以为此目的使用正则表达式:

new RegExp("\\b" + lookup + "\\b").test(text)

请点击此处了解更多详情: whole word match in javascript