2016-12-30 71 views
-1

我试图取代所有这些字符串:替换{{事}}在多个字符串包含变量

'Apples are {{appleColor}}' 
'Oranges are {{orangeColor}}' 
'My name is {{name}}' 

有了这些:提前

obj = { 
    appleColor: 'red', 
    orangeColor: 'orange', 
    name: 'Todd' 
} 

谢谢!

使用 String.prototype.replace()功能与 更换回调
+0

你可以做到这一点是大多数浏览器目前在使用'$ {}' – elclanrs

+2

纯JS模板字符串你在努力?那么你有什么尝试?或者你的意思是你想要? – NewToJS

+0

mustache.js做这件事,更多 – dandavis

回答

4

简单的解决方案:

var str = "'Apples are {{appleColor}}', 'Oranges are {{orangeColor}}', 'My name is {{name}}' ", 
 
    obj = { 
 
     appleColor: 'red', 
 
     orangeColor: 'orange', 
 
     name: 'Todd' 
 
    }; 
 

 
str = str.replace(/{{(\w+)}}/g, function (m, m1) { 
 
    return obj[m1] || m; 
 
}); 
 

 
console.log(str);

+0

有一些值得提及这种方法的警告;错误处理显示数据名称,“toString”等冲突,嵌套snafu,只有罗嗦的键名称(没有'_'或'$'支持),没有对象路径深度等。 – dandavis

+1

@dandavis,正如我写的*简单的解决方案* ...简单的情况下) – RomanPerekhrest

+0

这是一个很好的答案,我只是卖'mustache.js';) – dandavis