挑出字符串中的单词

singling out words in a string

这里是基本问题!

我们正在使用 JavaScript 创建一个聊天机器人,它会响应用户在聊天中发布的消息中包含的某些词。

目前它响应:

if(input.includes('bot') {}

然而,这也会使其响应其他词,例如 "bother" "bottle" 等等。我们尝试了以下

if(input.includes('bot ') || input.includes(' bot ') || input.includes(' bot')) {}

这实际上阻止了它对独立单词 "bot" 的响应,并且仍然对诸如 "we both are" 之类的句子做出响应(因为“两个都是”)

我已经有一段时间没有编程了,希望得到一些帮助,谢谢!

您可以使用 .split() 拆分聊天消息,然后查看是否有任何单词是 "bot"。

var msg = "Hello bot";

var mArr = msg.split(" ");

function contains(arr,word){
    for (i in arr){
        if (arr[i] === word){
            return true;
        }
    }
    return false;
}

contains(mArr,"bot");//true

这是我早期的方法,您可能还需要单独过滤 "bot" 或 "bot," 等。

你应该这样做。这也将在句子的开头或结尾处或当它后跟逗号、点、感叹号、问号等时正确检查您的密钥("bot" 在这种情况下)

var msg1 = "Hello bot",
    msg2 = "Hello bottle",
     key = "bot",
       r = new RegExp("\b"+key+"\b");
console.log(r.test(msg1));
console.log(r.test(msg2));