Javascript - 查找用数组中的值替换字符串的一部分
Javascript - Find an replace a part of a string with value from an array
我有一个字符串,但在字符串中的某些点它有动态值。我想在字符串中找到这些点并用数组中的值替换它们。
假设我有:
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.
这看起来很简单,但我对此感到沮丧。我找不到轻松做到这一点的方法。
您可以将
replace
与正则表达式和函数一起使用:
string.replace(/{('d+)}/g, function(match, n) {
return array[n-1];
});
您还可以检查n < 1 || n > array.length
以提供回退值,以防数字超出范围。
或者,新的 ES6 方式是使用标记的模板字符串
function tag(strings, ...values) {
var parts = [];
for(var i=0; i<strings.length; ++i)
parts.push(strings[i], array[values[i]-1]);
return parts.join('');
}
tag`This is a ${1}, and this is a ${2}.`
像这样
string.replace(/'{('d+)'}/g, function(m, n){
return array[n-1]
})
您可以使用Array.prototype.reduce
:
var StringHelper = {
format: function(format, args) {
return args.reduce(function(result, currentReplace, currentReplaceIndex) {
result = result.replace("{" + (currentReplaceIndex + 1) + "}", args[currentReplaceIndex]);
return result;
}, format);
}
};
var sourceString = "My name is {1} and I'm {2} years old";
var replaceItems = ["Matías", "31"];
var parsedString = StringHelper.format(sourceString, replaceItems);
alert(parsedString);
它是正则表达式的一个很好的替代方案,我不确定我是否以正确的方式进行了 jsPerf 测试,但它表明这种方法优于正则表达式。
相关文章:
- 如何用jquery替换字符串中可能变化的字符
- 用数字单位替换字符串的一部分
- 替换字符串javascript中的所有特殊字符..
- 替换字符串的脚本;在某些网站上不起作用
- 使用javascript替换字符串中除第一个和最后一个之外的所有字符
- 替换字符串中的占位符值
- 用HTML元素替换字符串的一部分
- JavaScript来替换字符串中的变量
- 如何替换字符串中最后一个出现的变量
- 在JavaScript中,如何用一个字符替换字符串中的所有字母
- 替换字符串中的数字
- 如何使用JavaScript Regex替换字符串中双引号之间的文本
- JavaScript:替换字符串两边的字符
- 用JQuery/Javascript替换字符串中的所有逗号
- 替换字符串的下一个匹配项
- JavaScript 不会替换字符串的最后一个符号
- 在 JavaScript 中替换字符串中的字母
- 修复了如何在容器中查找和替换字符串的功能
- 需要在 javascript 倒计时达到 0 后替换字符串
- j如何从给定字符串的一部分替换字符串