我正试图让Discord机器人用一条消息替换一条消息中的各个单词,但是我似乎无法弄清楚如何用一个以上的单词来做这个事情。
让我举个例子:
我想什么都不要替换'!say'
我想用“食人魔”代替“骆驼”
我想用'johnny'代替'john'
因此,我希望机器人将这些单词替换为其他单词。但是我只能通过一次替换来解决问题,否则它将重复该消息,并且每次都会进行不同的更改。
这是我目前获得的代码
client.on("message", message => {
if (message.content.startsWith("!say")) {
message.channel.sendMessage("I say: " + message.content.replace('!say ','' + '\n'))
};
});
有人知道吗? 抱歉,这太令人困惑了:(
答案 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);