如何从参数数组形成单个字符串?
How to form single string from argument array?
我正在尝试找出如何为我的审核命令正确设置原因参数。
我打算让它像这样执行:
!warn <@UserMention> [reason]
我已将其设置为命令名称后面的任何单词都将被分割成一个参数数组。
let messageArray = message.content.split(/\s+/g);
let cmd = messageArray[0];
let args = messageArray.slice(1);
let command = cmd.slice(prefix.length);
我可以让版主将原因放在引号之间,以便控制台将其作为一个字符串读取,但这会带来一些不便。我将如何拼接从 args[1]
开始的任意数量的参数以生成标记为 "reason" 的完整字符串?
如果我没理解错的话,你所遇到的问题就是收到一条消息而不是一组参数。
您可以 Array#join
参数:
let msg = messageArray.slice(1).join(' ');
这会将消息的所有单词与单个 space 连接起来。见 MDN documentation.
最简单的是使用array.Reduce
someArray = ["I","like","icecream"]
someArray.reduce((total, value) => total + value, "")
//becomes "Ilikeicecream"
请随意在每个单词的末尾添加空格。
我正在尝试找出如何为我的审核命令正确设置原因参数。
我打算让它像这样执行:
!warn <@UserMention> [reason]
我已将其设置为命令名称后面的任何单词都将被分割成一个参数数组。
let messageArray = message.content.split(/\s+/g);
let cmd = messageArray[0];
let args = messageArray.slice(1);
let command = cmd.slice(prefix.length);
我可以让版主将原因放在引号之间,以便控制台将其作为一个字符串读取,但这会带来一些不便。我将如何拼接从 args[1]
开始的任意数量的参数以生成标记为 "reason" 的完整字符串?
如果我没理解错的话,你所遇到的问题就是收到一条消息而不是一组参数。
您可以 Array#join
参数:
let msg = messageArray.slice(1).join(' ');
这会将消息的所有单词与单个 space 连接起来。见 MDN documentation.
最简单的是使用array.Reduce
someArray = ["I","like","icecream"]
someArray.reduce((total, value) => total + value, "")
//becomes "Ilikeicecream"
请随意在每个单词的末尾添加空格。