Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS字符串:替换为正则表达式中的索引_Javascript_Arrays_Regex_String - Fatal编程技术网

Javascript JS字符串:替换为正则表达式中的索引

Javascript JS字符串:替换为正则表达式中的索引,javascript,arrays,regex,string,Javascript,Arrays,Regex,String,我对regex几乎没有经验,我想知道如何替换由regex标识的字符串中的一个部分,其中索引是已标识部分的一部分 下面是我的示例字符串: let exampleStr = "How do I {0} the {n} with the {1} in my array?"; 这是我的数据阵列: let arr = ["replace", "items"]; 现在,使用replace和regex,我想将{#}部分中的索引与匹配索引的数组元素相匹配 结果字符串: let result = "How d

我对regex几乎没有经验,我想知道如何替换由regex标识的字符串中的一个部分,其中索引是已标识部分的一部分

下面是我的示例字符串:

let exampleStr = "How do I {0} the {n} with the {1} in my array?";
这是我的数据阵列:

let arr = ["replace", "items"];
现在,使用replace和regex,我想将{#}部分中的索引与匹配索引的数组元素相匹配

结果字符串:

let result = "How do I replace the {n} with the items in my array?";
注意它将如何忽略{n},因为它不包含数值

我可以用Array.indexOf、Number.isNaN、typeof等来实现这一点,但regex似乎是“正确的”和更简洁的实现方式,但阅读起来有点困难:)

提前感谢。

您可以使用:

let exampleStr=“如何使用数组中的{1}来处理{0}和{n}”;
设arr=[“替换”,“项”];
让result=exampleStr.replace(/\{(\d+)\}/g,(g0,g1)=>arr[parseInt(g1,10)];

控制台日志(结果)如果您知道要替换的字符串,为什么需要ajax?作为程序员,我非常喜欢通用解决方案。但一般的例子有时很难掌握,可能会让读者感到困惑。所以,当我在寻找一个通用的解决方案时,我发现以更具体的方式给出一个例子更合适。@torazaburo-你是对的,但这是一个风格选择
{
}
是元字符,我通常喜欢对它们进行转义。就数字而言,这在这里更为合理<代码>{\d+}
可能会变成
{2}
,例如在测试或修改的代码中,导致语法错误。谢谢。此解决方案似乎要求您提前知道有两个字符串需要替换(
{0}
{1}
)。如果要替换的字符串数量未知,这意味着可能存在
{2}
{3}
{4}
,…?@IanY.-只要您提供了正确的
arr
,这应该适用于任何数字,可以动态创建。这里的前两行是从问题中复制过来的,所以我有可运行的代码。你说得对。它适用于任何数字。谢谢