节点.js .match() 方法正确用法
Node.js .match() method correct usage?
我从一个人那里买了一些代码,然后我决定要修改它。首先,它是用 Node 编写的.js我对 node.js 的编程经验很少(没有),尽管我知道不错的 python 和一点 C#,所以我有点理解它。虽然,一旦我想开始编辑代码,我就没有成功地复制他所做的。
steamFriends.on('friendMsg', (id, msg) => {
if (config.get('admins').indexOf(id) == -1) return;
if (msg.indexOf('!price') == 0) {
var match = msg.match(/!price (director|audition) (['.0-9]+)/);
if (!match) steamFriends.sendMessage(id, 'Usage: !price <director or audtion> <price> (e.g. !price director 3.77)');
else {
steamFriends.sendMessage(id, 'Successfully set price of '+match[1] + ' reels to '+match[2] + '!');
PRICES[match[1] == 'audition' ? 0 : 1] = parseFloat(match[2]);
changePrices();
}
}
else if (msg.indexOf('!changename') == 0) {
var name = msg.match(/!changename (['A-Z]+)/);
steamFriends.setPersonaName(name)
}
});
上面的一个显然是他的,下面的一个是我的。我到底做错了什么?我认为在这里使用 .match() 方法是错误的,但我不知道用什么来代替它。
如果我
理解正确,您需要获取以下字符串中的用户名:!changename username
这是修复的"您的"代码部分:
else if (msg.indexOf('!changename') == 0) {
var name = msg.match(/!changename ([A-Z]+)/i); //Added i flag (Case insensitive
if(name)
steamFriends.setPersonaName(name[1]); //The username will be in name[1]
}
你不需要在字符集中转义'A
,[A-Z]
就足够了,我添加了i
标志,我相信你需要,如果你只需要大写字母,请删除它。
.match可以在那里完美地使用,问题是你需要知道.match
返回一个匹配数组。
var string = "!changename Foo";
var matches = string.match(/!changename ([A-Z]+)/i);
document.body.innerHTML = "0: " + matches[0] + "<br>1: " + matches[1];
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 数组在递归方法中设置为null
- 打破承诺链的好方法是什么
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 使用“;这个“;JavaScript原型方法中的关键字
- 序列化数据属性中对象的最可靠方法
- 使用Objective-C的JavaScript注入方法
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 有没有一种方法可以防止img get请求使用css或js发生
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- toBoolean方法类似于toString
- 如何在单击复选框后调用控制器方法
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 递归使用 eval() 是检查程序执行的好方法吗?
- 用法数组.推送方法
- 节点.js .match() 方法正确用法
- 复选框和onchange方法用法
- 调用方法和Array.prototype.slice.call的用法
- 这个关键字在链方法上的用法-JavaScript