当前位置:  开发笔记 > 编程语言 > 正文

用javascript对象替换字符串值

如何解决《用javascript对象替换字符串值》经验,为你挑选了1个好方法。

我目前正在为NodeJs制作一个小模块.我需要一点帮助.

我会这样说的.我有一个带字符串的变量.它包含一个字符串html值.现在我需要$(title)用我的对象替换这样的东西{ "title" : "my title" }.这可以扩展到用户提供的任何内容.这是当前的代码.我认为我需要RegEx才能做到这一点.你能帮助我吗?

var html = `


  
  Document $(title)



  

Test file, $(text)

`; function replacer(html, replace) { // i need a regex to replace these data //return replacedData; } replacer(html, { "title" : "my title", "text" : "text is this" });



1> shakib..:

您可以使用正则表达式使用简单的模板函数,

var replacer = function(tpl, data) {
  var re = /\$\(([^\)]+)?\)/g, match;
  while(match = re.exec(tpl)) {
    tpl = tpl.replace(match[0], data[match[1]])
    re.lastIndex = 0;
  }
  return tpl;
}

用得像

var result = replacer(html, { "title" : "my title", "text" : "text is this" });

的jsfiddle

细节在这里

编辑

实际上,作为评论中提到的torazaburo,它可以被重构为

var replacer = function(tpl, data) {
    return tpl.replace(/\$\(([^\)]+)?\)/g, function($1, $2) { return data[$2]; });
}

的jsfiddle

希望这可以帮助

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有