Javascript 如何获取indexOf(";@";)后面的单词并将其添加到数组中
我正在做一个javascript机器人,它可以在任何人使用时读取聊天!示例@example123 它会使用“@”后面的单词what将用户添加到数组中,因为我是Javascript新手,我已经失败了大约60次,我想这里可能有人可以帮我 这是一个我脑海中的小例子。 该页面有一个API(API.sendChat(“文本”)) 尝试: if(args[0]==“!example”&&args[1].indexOf(“@”)//下一步是什么?){ } asJavascript 如何获取indexOf(";@";)后面的单词并将其添加到数组中,javascript,Javascript,我正在做一个javascript机器人,它可以在任何人使用时读取聊天!示例@example123 它会使用“@”后面的单词what将用户添加到数组中,因为我是Javascript新手,我已经失败了大约60次,我想这里可能有人可以帮我 这是一个我脑海中的小例子。 该页面有一个API(API.sendChat(“文本”)) 尝试: if(args[0]==“!example”&&args[1].indexOf(“@”)//下一步是什么?){ } asindexOf采用第二个参数,指示函数从特定位置开
indexOf
采用第二个参数,指示函数从特定位置开始搜索。因此,当您想提取@
符号后的单词时,您需要查找@
和下一个空格
之间的文本部分
hello @valerj how are you
^ ^
p1 p2
p2 = str.indexOf(/ ,.?!$/,p1);
所以你会用
p1 = str.indexOf('@');
p2 = str.indexOf(' ',p1);
name = str.substr(p1,p2-p1); //substr want start and length
然而,正如你所看到的,它会在很多字符串上失败,比如
hello @valerij, how are you
ping @valerij
^line end
您可以通过使用正则表达式获取p2
eg来解决这个问题
hello @valerj how are you
^ ^
p1 p2
p2 = str.indexOf(/ ,.?!$/,p1);
但它仍有可能失败。最好的解决方案是对所有操作使用正则表达式,例如
var myregexp = /@(\w+)\b/;
(\b
是单词边界
,将处理所有标点、行尾和其他字符)
然后使用这个代码
var userNames = [];
var match = myregexp.exec(str);
while (match != null) {
//username is in match[1] (first capturing group)
userNames.push(match[1]);
match = myregexp.exec(subject);
}
要使用聊天信息中提到的用户名填充数组请在您的帖子中包含您所做的一些尝试(即使代码不起作用)-这是解释您尝试执行的操作的最佳方式。别忘了包括预期的结果。你知道正则表达式吗?我想应该能帮你解决这个问题(即使这不是唯一的解决方案)对不起,我在添加代码时,它突然发布了它。你的代码没有向我们展示你试图解决问题的方法。请发布您的60次失败中的一些,这可能会有帮助。我尝试过类似的方法,但我明白了,这是错误的。我只需要暂时填充数组。所以它会从数组中获取名称!使用了示例。@Randy那么问题出在哪里?