我在node.js中创建了一个聊天机器人,我需要做的是监视聊天中发送的消息。一个命令将以'!'开始我需要检查命令后是否有任何东西发送,例如'!command hello there'如果在'!command'后面有任何东西,它将不会执行任何操作,我怎么能检查!(字符串)之后的任何东西?从第一个字符到下一个空间获取字符串的一部分?
回答
在这个例子中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
}
谢谢你,你已经很容易理解。最后一部分也是我一直在寻找的部分。 – Kieron606
这是使用正则表达式的好地方。您可以尝试在这里创建不同的正则表达式: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'!'和领先的空间已被删除。
这会更好地作为评论。 – Harangue
你可以在javascript中编写一个循环。
var s = "Some String"
for (var i = 0; i < s.length; i++) {
if (s[i] == " ") {
//Do something on space
}
}
如果字符串与!
字符开始,尝试使用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)
- 1. 获取特定部分从一个字符串到另一个
- 2. 从字符串数组中获取第一个字符串c
- 3. 在一个字符串复制一个字符,留下一个空字符串
- 4. PHP获取URL的一部分到一个字符串
- 5. 提取字符串的第一部分
- 6. 获取每个单词的第一个字符的字符串
- 7. JavaScript从一个特定的字符串获得一个字符串到一个空间
- 8. Python:获取列表中第一个字符串的第一个字符?
- 9. C#:如何获得一个字符串的第一个字符?
- 10. 问题分裂字符串在第一个空的空间
- 11. 字符串的第一个字符和最后一个字符
- 12. 从字节中获取一个字符串直到空
- 13. 获取分隔符前的第一个字符串?
- 14. 用另一个字符串替换字符串的一部分
- 15. 从std :: string获取第一个字符
- 16. PHP获取字符串的一部分
- 17. 查询来获取一个字符串的一部分
- 18. 如何获取SQL中的字符串的第一个字符?
- 19. 的Java获取第一个字符值的字符串
- 20. 在第一个空格处划分一个字符串
- 21. 在第一个空格上分割一个字符串
- 22. PHP:获取第一个字的第一个字符和第二个字符的三个字符
- 23. 作为第一个字符的空间
- 24. 剥字符串的第一个字符
- 25. 从参数中获取字符串的第一个字
- 26. 如何获取字符串的第一个元素与空间拆分
- 27. Android如何获取字符串的第一个字符?
- 28. 获取并删除字符串的第一个字符
- 29. Ruby:如何获取字符串的第一个字符
- 30. 获取字符串中第一个字符的Unicode值
http://regular-expressions.info – deceze