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

标签 javascript arrays json regex string

长话短说

如何返回包含子字符串的字符串,但前提是被字母包围?

语境

我正在创建一个虚构语言的翻译工具。我有一个存储在 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/

相关文章:

javascript - by.cssContainingText 未按预期工作

arrays - PostgreSQL 多维数组

java - 在 Java 中将对象添加到数组中

php - 批号压​​痕器和美化器

javascript - ember.js 组件属性错误 "TypeError: Cannot use ' in' operator to searching for 'isEditing' in undefined"

javascript:克隆对象及其节点

arrays - 字符串插补搜索

json - json.getString() 函数返回一个格式奇怪的字符串,因此无法将其与看似相同值的字符串进行比较

c# - 无法让 ASP.NET MVC 6 Controller 返回 JSON

c# - 我如何用 .net 解析这个 json?