此问题在此处已有答案:
Replace regular expression matches with array of values(1个答案)
6天前关闭。
我尝试使用正则表达式来替换JavaScript模板中的位置值。
例如,如果我有以下内容:
const myTemplate = "First: {}, Second: {}, Third: {}";
const myValues = ["A", "B", "C"];
我想把myValues
中的项目Map到myTemplate
中的{}
占位符,并在相应的位置上进行匹配,因此结果将是First: A, Second: B, Third: C
。
我尝试过如下方法,但是没有用,因为replace
不接受数组:
const myTemplate = "First: {}, Second: {}, Third: {}";
const myValues = ["A", "B", "C"];
const regexStr = /{}/g;
const result = myTemplate.replace(regexStr, myValues);
我想我可以传递一个函数给replace()
,但是它没有一个参数来表示被“替换”的索引。
5条答案
按热度按时间sf6xfgos1#
您可以将
replace()
与shift()
搭配使用。这里假设
myValue
中有足够的项,如果你不确定,你可以添加一个备用项:(myValues.shift() || 'FallBack')
mxg2im7a2#
您可以像这样使用
.splice()
:t2a7ltrp3#
如果没有regex,您可以使用
split
,然后使用reduce
将值与分区合并:注意:这不会使
myValues
发生突变。csbfibhn4#
简单地重复替换相同的字符串怎么样?
xqk2d5yq5#
一种可能的基于
replace
的解决方案利用bind
将替换值数组转换为替换函数,其中,对于每个替换函数调用,通过从绑定数组中shift
转换该值,绑定数组返回正确的替换值(从而改变后者)。第一个
在例如
myValues
的封装和/或突变不重要的情况下,可以简化相同的方法,如下面的示例所示...第一次