我在node.js中创建了一个聊天机器人,我需要做的是监控聊天中发送的消息。命令将以'!'开头并且我需要检查命令之后是否有任何发送的命令,例如'!command hello there'如果在'!command'之后有什么东西它将无法做任何事情我怎么能检查之后的任何事情!(字符串)?
答案 0 :(得分:1)
在此示例中,command
为do
,args
为something
var text = '!do something'
var rx = /^!(\w+)\s(.*)$/
var matches = text.match(rx)
if (matches) {
var command = matches[1]
var args = matches[2]
// do something with the command and args here
}
答案 1 :(得分:0)
你可以用javascript写一个循环。
var s = "Some String"
for (var i = 0; i < s.length; i++) {
if (s[i] == " ") {
//Do something on space
}
}
答案 2 :(得分:0)
如果字符串以!
字符开头,请尝试使用String.prototype.match()
与RegExp
/(!(?=[a-z0-9-]+))|([^\1]+)/g
匹配!
字符,不是第一个捕获组的字符串部分
var str = "!command hello there"
var res = str.match(/(!(?=[a-z0-9-]+))|([^\1]+)/g);
console.log(res)
答案 3 :(得分:-1)
这是使用正则表达式的好地方。您可以尝试在此处创建不同的正则表达式:http://www.regexr.com/
javascript中正则表达式的文档可以在这里找到: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
使用'!(\ w +)\ s +(。+)'作为正则表达式的示例:
var str = '!command say hello';
var args = str.match(!(\w+)\s+(.+)/)
console.log(args); //["!command say hello", "command", "say hello"]
在上面的例子中,args [1]将输入命令,args [2]将在命令后提供任何内容。不,'!'领先的空间已被删除。