我有以下情况: 有一个字符串包含一些变量,例如:
var string = '/page/{id}/{title}';
现在,我希望能够用以下数组中的变量替换 {id} 和 {title}:
var arr = {'id':10, 'title':'test-page'};
我想出了这个小正则表达式:
string.replace ( /{([a-zA-Z0-9]+)}/g , '$1' );
正如预期的那样,它只会返回:
/page/id/title
所以我尝试了这个:
string.replace ( /{([a-zA-Z0-9]+)}/g , arr [ '$1' ] );
但这会返回一个
/page/undefined/undefined
现在,我知道类似这样的事情可以通过循环等方式实现,但是如果能有一个单行代码就更好了。我不太习惯 JS,所以我希望有一些我不知道的功能或选项可以帮助我解决这个问题:)。
最好的问候!
最佳答案
尝试这样的事情:
var arr = {'id':10, 'title':'test-page'};
'/page/{id}/{title}'.replace(/\{([\w\d]+?)\}/g, function(a, b) {
return arr[b] || '';
});
如果您经常使用这个替换工具,我会创建一个 String
辅助原型(prototype)方法。例如:
String.prototype.template = function(data) {
return this.replace(/\{([\w\d]+?)\}/g, function(a, b) {
return data[b] || '';
});
};
并像这样使用它:
'/page/{id}/{title}'.template(arr);
关于Javascript 替换为 $1 作为 var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22287432/