gpt4 book ai didi

javascript - 自动替换 RegEx JavaScript 中的参数

转载 作者:行者123 更新时间:2023-12-01 01:02:24 24 4
gpt4 key购买 nike

我对一些正则表达式有疑问。

就上下文而言,我目前正在 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 $2CmdName 变量中,因为 theString 永远不会改变。

在上面的示例中,CmdName 需要以 bin [USER] $0 $1 [DESC] 结尾。

我怎样才能有效地做到这一点,也可能迭代它?将 [ARG] 值的使用限制为三个或四个也很方便。

最佳答案

您可以使用正则表达式 \[(.*?)\][] 中的内容获取到捕获组 ( Regex demo )。然后使用replacement function分别处理 arg 和其他参数。使用 argCounter 获取连续数字 $0$1

let str = "bin [user] [aRG] [arg] [DEsc]",
argCounter = 0;

const newStr = str.replace(/\[(.*?)\]/g,
(m, p1) => {
if (p1.toUpperCase() === 'ARG')
return `$${argCounter++}`
else
return `[${p1.toUpperCase()}]`
})

console.log(newStr)

关于javascript - 自动替换 RegEx JavaScript 中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55937004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com