Javascript 使用数组填写格式字符串
我试图获取一个数组,并在格式字符串中使用它的值Javascript 使用数组填写格式字符串,javascript,string,format,Javascript,String,Format,我试图获取一个数组,并在格式字符串中使用它的值 var arry = ["1", "2", "3"]; alert("Numbers {0} equal {2} - {1}.".format(arry)); 问题是这使得数字1,2,3等于{2}-{1}。而不是数字1等于3-2的期望结果。。有没有一种方法可以在不进行某种for循环的情况下得到这个结果 function arrayFormat(str, arr) { return str.replace(/{(\d+)}/g, funct
var arry = ["1", "2", "3"];
alert("Numbers {0} equal {2} - {1}.".format(arry));
问题是这使得数字1,2,3等于{2}-{1}。而不是数字1等于3-2的期望结果。。有没有一种方法可以在不进行某种for循环的情况下得到这个结果
function arrayFormat(str, arr) {
return str.replace(/{(\d+)}/g, function(match, m1) {
return (m1 in arr) ? arr[m1] : match;
});
}
它使用,第二个参数作为函数。它使用括号中数字的每个匹配项作为键,并用对应于该键的数组中的值替换该匹配项
您可以尝试以下方法:
String.format = function() {
var s = arguments[0];
for (var i = 0; i < arguments[1].length; i++) {
var reg = new RegExp("\\{" + i + "\\}", "gm");
s = s.replace(reg, arguments[1][i]);
}
return s;
}
var arry = ["1", "2", "3"];
console.log(String.format("Number {0} equal {2} - {1}.",arry)); //Numbers 1 equal 3 - 2.
console.log(String.format("Number {0} equal {2} - {1}.",'1')); //Numbers 1 equal {2} - {1}.
console.log(String.format("Number {0} equal {2} - {1}.",'12')); //Numbers 1 equal {2} - 2.
console.log(String.format("Number {0} equal {2} - {1}.",'123')); //Numbers 1 equal 3 - 2.
函数String.format看起来像?.format是python的东西。