2016-03-07 56 views
0

我在node.js中创建了一个聊天机器人,我需要做的是监视聊天中发送的消息。一个命令将以'!'开始我需要检查命令后是否有任何东西发送,例如'!command hello there'如果在'!command'后面有任何东西,它将不会执行任何操作,我怎么能检查!(字符串)之后的任何东西?从第一个字符到下一个空间获取字符串的一部分?

+0

http://regular-expressions.info – deceze

回答

1

在这个例子中commanddoargssomething

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 
} 
+0

谢谢你,你已经很容易理解。最后一部分也是我一直在寻找的部分。 – Kieron606

-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]将在命令后面提供任何内容。 Noe'!'和领先的空间已被删除。

+0

这会更好地作为评论。 – Harangue

0

你可以在javascript中编写一个循环。

var s = "Some String" 
for (var i = 0; i < s.length; i++) { 
    if (s[i] == " ") { 
     //Do something on space 
    } 
} 
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)

相关问题