【问题标题】:Replacing ${...} in javascript string?替换 JavaScript 字符串中的 ${...}?
【发布时间】:2013-08-30 15:42:41
【问题描述】:

如何替换 JavaScript 字符串中的所有 ${...} 实例?示例:

var before = "My name is ${name} and I like ${sport} because ${sport} is challenging."

变成

var after = "My name is Bob and I like soccer because soccer is challenging."

我尝试遵循Replace multiple strings with multiple other strings 的最佳答案,但您不能拥有以符号开头的密钥...

非常感谢!

【问题讨论】:

  • 你有没有尝试过?

标签: javascript regex string replace str-replace


【解决方案1】:

修改您链接的问题的答案,您可以capture 匹配的一部分(仅名称)并将其用作键:

var str = "My name is ${name} and I like ${sport} because ${sport} is challenging.";
var mapObj = {
   name:"Bob",
   sport:"soccer"
};
str = str.replace(/[$]{([^{}]+)}/g, function(match, key){
  return mapObj[key];
});

匿名函数的第二个参数将填充模式中第一对括号内匹配的内容(即[^{}]*匹配的内容)。

当然,您应该添加一些完整性检查,以确保您的 key 确实存在于地图中。或者,使用另一个问题中的方法,并在模式中列出允许的名称:

/[$]{(name|sport)}/g

【讨论】:

  • 这是个邪恶的天才。
  • 我真的需要重新学习我的正则表达式,非常感谢您快速简洁的回答!
  • @user1464011 我链接的教程是一个非常好的起点;)
猜你喜欢
  • 2015-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-19
  • 2014-12-31
相关资源
最近更新 更多