【问题标题】:Node.js .match() method correct usage?Node.js .match() 方法正确用法?
【发布时间】:2016-05-09 08:53:47
【问题描述】:

我从一个人那里买了一些代码,然后我决定要修改它。首先,它是用 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() 方法在这里使用是错误的,但我不知道用什么来代替它。

【问题讨论】:

  • 你所说的“最底层”是什么意思——最后一个else if?如果是这样,请描述您正在尝试做的事情
  • @DominicTobias 底部是最后一个 else if。我正在尝试获取一个字符串(例如!changename Hello World)并仅获取“Hello World”部分并将其传递给 steamFriends.setPersonaName(name)

标签: javascript node.js bots steam


【解决方案1】:

如果我理解正确,您需要获取以下字符串中的用户名:!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];

【讨论】:

  • 非常感谢您的回复!虽然,如果我尝试执行 !changename Hello World ,changename 函数可以正常工作,但它只会将名称更改为 'Hello' 为什么会这样?
  • 我意识到这是因为 A-Z,我不能在名称中添加空格。或任何其他不在字母表中的字符。我怎样才能改变这个?为什么要添加 + ?
  • 改成[A-Z]+(集合中加一个空格,如果允许数字,把A-Z改成\w)
  • 非常感谢!你是最棒的
猜你喜欢
  • 2015-01-08
  • 1970-01-01
  • 2019-04-21
  • 1970-01-01
  • 1970-01-01
  • 2019-11-13
  • 2023-03-10
  • 2015-03-01
  • 1970-01-01
相关资源
最近更新 更多