Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取indexOf(";@";)后面的单词并将其添加到数组中_Javascript - Fatal编程技术网

Javascript 如何获取indexOf(";@";)后面的单词并将其添加到数组中

Javascript 如何获取indexOf(";@";)后面的单词并将其添加到数组中,javascript,Javascript,我正在做一个javascript机器人,它可以在任何人使用时读取聊天!示例@example123 它会使用“@”后面的单词what将用户添加到数组中,因为我是Javascript新手,我已经失败了大约60次,我想这里可能有人可以帮我 这是一个我脑海中的小例子。 该页面有一个API(API.sendChat(“文本”)) 尝试: if(args[0]==“!example”&&args[1].indexOf(“@”)//下一步是什么?){ } asindexOf采用第二个参数,指示函数从特定位置开

我正在做一个javascript机器人,它可以在任何人使用时读取聊天!示例@example123 它会使用“@”后面的单词what将用户添加到数组中,因为我是Javascript新手,我已经失败了大约60次,我想这里可能有人可以帮我

这是一个我脑海中的小例子。 该页面有一个API(API.sendChat(“文本”))

尝试: if(args[0]==“!example”&&args[1].indexOf(“@”)//下一步是什么?){ }

as
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那么问题出在哪里?