Javascript-从数组中查找并替换字符串的一部分

Javascript-从数组中查找并替换字符串的一部分,javascript,arrays,string,Javascript,Arrays,String,我有一个字符串,但在字符串的某些点上它有动态值。 我想在字符串中找到这些点,并用数组中的值替换它们 假设我有: var array = ['string', 'value']; var string = 'This is a {1}, and this is a {2}.'; 现在我需要找出一种方法,用数组中第一个索引的值替换{1},用数组中第二个索引的值替换{2} 因此字符串将如下所示: This is a string, and this is a value. 这看起来很简单,但我在这

我有一个字符串,但在字符串的某些点上它有动态值。 我想在字符串中找到这些点,并用数组中的值替换它们

假设我有:

var array = ['string', 'value'];
var string = 'This is a {1}, and this is a {2}.';
现在我需要找出一种方法,用数组中第一个索引的值替换{1},用数组中第二个索引的值替换{2}

因此字符串将如下所示:

This is a string, and this is a value.
这看起来很简单,但我在这件事上伤了脑筋。我找不到一种简单的方法来实现这一点。

您可以使用正则表达式和函数:

string.replace(/{(\d+)}/g, function(match, n) {
  return array[n-1];
});
您还可以检查
n<1 | | n>array.length
以在数字超出范围时提供回退值

或者,新的ES6方式使用

函数标记(字符串,…值){
var部分=[];
对于(var i=0;i您可以使用:

var StringHelper={
格式:函数(格式,参数){
返回args.reduce(函数(结果、currentReplace、currentReplaceIndex){
result=result.replace(“{”+(currentReplaceIndex+1)+“}”,args[currentReplaceIndex]);
返回结果;
},格式);
}
};
var sourceString=“我的名字是{1},我{2}岁”;
var replaceItems=[“Matías”,“31”];
var parsedString=StringHelper.format(sourceString,replaceItems);
警报(解析字符串);
像这样

string.replace(/\{(\d+)\}/g, function(m, n){
  return array[n-1]
})

当我使用第一个示例时,{和}仍然在字符串中,尽管1和2被正确替换。匹配变量包含{1}或{2},但只替换值本身,而不替换括号。好的,谢谢。现在它工作了。显然,在生成字符串的代码中,它添加了两个{和两个},而不是一个。现在它工作得很好。当我使用您的第一个示例时,{和}'仍然在字符串中,尽管1和2被正确替换。这对我来说也很有效,尽管我更喜欢接受的答案。@DijkeMark我相信你不知道封装的威力。请检查我更新的答案,它将解决方案概括为一个对象函数。@DijkeMark如果你不能使用ES6或更高版本,这个简单的字符串格式功能就不起作用了ion是最接近您的问题的解决方案,正如我所说,它似乎优于正则表达式。顺便说一句,我将把我的答案留给更多的读者。我明白了,谢谢您的解释。我将在以后的案例中记住它。
string.replace(/\{(\d+)\}/g, function(m, n){
  return array[n-1]
})