从第一个字符到下一个空格获取字符串的一部分?

时间:2016-03-07 15:39:30

标签: javascript node.js

我在node.js中创建了一个聊天机器人,我需要做的是监控聊天中发送的消息。命令将以'!'开头并且我需要检查命令之后是否有任何发送的命令,例如'!command hello there'如果在'!command'之后有什么东西它将无法做任何事情我怎么能检查之后的任何事情!(字符串)?

4 个答案:

答案 0 :(得分: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
}

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