【发布时间】:2014-09-02 13:42:19
【问题描述】:
基本上我前段时间在玩一个 Steam 机器人,当你在一个数组中说话时让它自动回复,即一个“hello-triggers”数组,其中包含诸如“hi”之类的东西,“你好”之类的。我这样做了,只要它收到一条消息,它就会使用 indexOf() 检查匹配项,一切正常,直到我注意到它会注意到“hiasodkaso”或类似“hidemyass”作为“hi”触发器。
因此它会匹配包含该单词的任何内容,即使它位于单词的中间。
我将如何让 indexOf 只在它是确切的单词时才注意到它,而不是同一个单词中的其他东西?
我没有我使用的脚本,但我会做一个非常相似的例子:
var hiTriggers = ['hi', 'hello', 'yo'];
// here goes the receiving message function and what not, then:
for(var i = 0; i < hiTriggers.length; i++) {
if(message.indexOf(hiTriggers[i]) >= 0) {
bot.sendMessage(SteamID, randomHelloMsg[Math stuff here blabla]); // randomHelloMsg is already defined
}
}
不会使用正则表达式,对吧?因为它用于表达式或其他任何东西。 (我的英语不是很好,ikr)
提前致谢。如果我对某些事情不够清楚,请告诉我,我会以另一种方式编辑/制定它! :)
【问题讨论】:
-
使用正则表达式?
/hi\b/? -
你不能用
indexOf来做这件事,但是你可以使用一个带有单词边界的正则表达式。 -
如果你想继续使用
indexOf,我昨天已经回答了同样的Java问题:stackoverflow.com/a/24675677/18771。您可以调整解决方案。
标签: javascript node.js