У меня вопрос по поводу некоторых регулярных выражений.
Для контекста, я сейчас создаю пользовательские команды на боте Discord.Мне нужно переставить аргументы в команде.
У меня есть эта строка здесь - bin [user] [aRG] [arg] [DEsc]
, и мне нужно расположить ее так - bin [USER] $0 $1 [DESC]
.Мне также нужно сделать это без учета регистра.
Я пытался создавать операторы IF при каждом возможном случае.Но я также должен помнить о том, что мне нужно изменить порядок, если сначала появляется [DESC]
, а не аргументы.Это то, что у меня было -
let theString = "bin [uSER] [arg] [DESc] [ARg]";
let CmdName = theString.split(" ")[0].toLowerCase();
if (theString.includes(/\[user\]/i)) CmdName += " [USER]";
if (theString.includes(/\[arg\]/i)) CmdName += " $0";
if (theString.includes(/\[arg\]/i)) CmdName += " $1";
if (theString.includes(/\[arg\]/i)) CmdName += " $2";
if (theString.includes(/\[desc\]/i)) CmdName += " [DESC]";
Приведенный выше пример не сработает в любом случае, если в theString
есть даже один [ARG]
, он будет включать $0 $1 $2
в переменную CmdName
, потому чтоtheString
никогда не изменится.
В приведенном выше примере CmdName
должно закончиться так, как bin [USER] $0 $1 [DESC]
.
Как я могу сделать это эффективно, возможно, также итерируя по нему?Ограничение использования [ARG]
значениями до трех или четырех также будет полезно.