Javascript 将字符串插入动态位置的字符串中

Javascript 将字符串插入动态位置的字符串中,javascript,regex,Javascript,Regex,我有一个字符串,其中包含一些颜色标记,如下所示: [GREEN][BLUE][RED] [GREEN][YELLOW][BLUE][RED] const placeholders = ['[GREEN]', '[YELLOW]', '[BLUE]', '[RED]']; 标签的位置可以不同。因此,[GREEN]可能位于中间或最后一个位置 现在我有了一个新的颜色标签,应该添加到该列表中,我们称之为[黄色]。所以[YELLOW]有一个动态位置号,让我们取变量const position=2。这

我有一个字符串,其中包含一些颜色标记,如下所示:

[GREEN][BLUE][RED]
[GREEN][YELLOW][BLUE][RED]
const placeholders = ['[GREEN]', '[YELLOW]', '[BLUE]', '[RED]'];
标签的位置可以不同。因此,
[GREEN]
可能位于中间或最后一个位置

现在我有了一个新的颜色标签,应该添加到该列表中,我们称之为
[黄色]
。所以
[YELLOW]
有一个动态位置号,让我们取变量
const position=2
。这意味着
[黄色]
应该放在第二位,应该是这样的:

[GREEN][BLUE][RED]
[GREEN][YELLOW][BLUE][RED]
const placeholders = ['[GREEN]', '[YELLOW]', '[BLUE]', '[RED]'];

我该怎么做?

您应该找到第一个
]
出现在哪个位置,然后在
[黄色]
const text=“[GREEN][BLUE][RED]”;
常数inputNumber=2;
常量addingText=“[YELLOW]”;
const index=text.split(“[”,inputNumber).join(“[”).length;
常量输出=[text.slice(0,索引),addingText,text.slice(索引)].join(“”);

console.log(output)
我会有一个这样的占位符数组:

[GREEN][BLUE][RED]
[GREEN][YELLOW][BLUE][RED]
const placeholders = ['[GREEN]', '[YELLOW]', '[BLUE]', '[RED]'];
当您需要在某个位置添加另一个占位符时,只需使用以下功能:

placeholder.splice(position, 0, newPlaceholder);
然后,当您需要使用它时,只需将其转换为字符串:

placeholder.join('');

我认为这将使它更易于处理,可读性更高,而且可能更快。

我会将其拆分为数组,然后在特定位置添加:

var text=“[GREEN][BLUE][RED]”;
var matches=text.match(/\[\w+\]/g);
匹配。拼接(1,0,“[黄色]”);
var result=matches.join(“”)

console.log(result);
您可以使用
。将
函数替换为以下正则表达式

((?:\[.*?\]){2})
使用
${variable}
将变量插入正则表达式时,使用:

((?:\\[.*?\\]){${position-1}})
var listColors=“[GREEN][BLUE][RED]”;
常数位置=2;
var color=“[YELLOW]”;
变量模式=`((?:\\[.\\]{${position-1}})`;
var regex=新的RegExp(模式);
var newListColors=listColors.replace(regex,`1${color}`);

console.log(newListColors);
您应该使用数组而不是regex,当您有带有特殊字符的标记或类似于
That's Hem
这样的单词时,这会容易得多。您可以看到示例。您可以查看此帖子吗?您可以动态更新
inputNumber