用其他单词替换消息中的多个单词?

时间:2019-09-07 08:06:42

标签: javascript discord discord.js

我正试图让Discord机器人用一条消息替换一条消息中的各个单词,但是我似乎无法弄清楚如何用一个以上的单词来做这个事情。

让我举个例子:

我想什么都不要替换'!say'

我想用“食人魔”代替“骆驼”

我想用'johnny'代替'john'

因此,我希望机器人将这些单词替换为其他单词。但是我只能通过一次替换来解决问题,否则它将重复该消息,并且每次都会进行不同的更改。

这是我目前获得的代码

client.on("message", message => {
if (message.content.startsWith("!say")) {
message.channel.sendMessage("I say: " + message.content.replace('!say ','' + '\n'))
};
});

有人知道吗? 抱歉,这太令人困惑了:(

1 个答案:

答案 0 :(得分:1)

我将创建一个对象,其键是要替换的单词,其值是它们的替换值。然后,您可以通过将所有键连接在一起来构造正则表达式,并使用替换函数在对象上查找适当的替换值:

const replacements = {
  '!say': '',
  llama: 'ogre',
  john: 'johnny'
};
const pattern = new RegExp(Object.keys(replacements).join('|'), 'g');
client.on("message", message => {
  const replacedText = message.content.replace(pattern, key => replacements[key]);
  // use replacedText
});

const replacements = {
  '!say': '',
  llama: 'ogre',
  john: 'johnny'
};
const pattern = new RegExp(Object.keys(replacements).join('|'), 'g');

const input = '!say foo bar llama baz john buzz';
const replacedText = input.replace(pattern, key => replacements[key]);
console.log(replacedText);