Node.js .match() 方法的正确用法?
Node.js .match() method correct usage?
我从一个人那里买了一些代码,然后我决定要修改它。首先,它是用 Node.js 编写的,我对 node.js 的编程经验很少(none),尽管我知道得体 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
这是 "your" 代码的固定部分:
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
returns 一个匹配数组。
var string = "!changename Foo";
var matches = string.match(/!changename ([A-Z]+)/i);
document.body.innerHTML = "0: " + matches[0] + "<br>1: " + matches[1];
我从一个人那里买了一些代码,然后我决定要修改它。首先,它是用 Node.js 编写的,我对 node.js 的编程经验很少(none),尽管我知道得体 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
这是 "your" 代码的固定部分:
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
returns 一个匹配数组。
var string = "!changename Foo";
var matches = string.match(/!changename ([A-Z]+)/i);
document.body.innerHTML = "0: " + matches[0] + "<br>1: " + matches[1];