我有一个存储在数据库中的大文本字段。文本字段在特定位置添加变量,类似于console.log()的工作方式。
“此文本由$ user1在$ date上编写,而$ user1正在使用$ user2来完成$ subject”
然后我可以用正确的动态值替换变量。
如果有一种简单的方法可以解决这个问题,或者我在每个位置拆分字符串然后使用新值进行重建,那就很好奇。
答案 0 :(得分:0)
您可以在javascript中使用replace
函数,它使用正则表达式。
示例:
var user1 = "Joe";
var original = "This text was written by $user1, on $date, while $user1 was working with $user2 to complete the $subject";
var newString = original.replace(/\$user1/g, user1);
等等。
答案 1 :(得分:0)
RegExp
调用String.prototype.replace进行匹配,并使用函数动态确定替换字符串。如果您可以创建一个对象映射,其属性名称与格式字符串中的变量相同,并且具有替换本身的值,则可以使用匹配的属性名称在一次传递中将它们全部替换,以从映射对象中获取相应的值
这样的事情:
var format = "This text was written by $user1, on $date, while $user1 was working with $user2 to complete the $subject";
var replacementsMap = {
user1: "John",
date: new Date(),
user2: "Jane",
subject: "Collaboration Project"
};
var result = format.replace(/\$([a-z]+\d*)/g, function(match, prop) {
// match => the full string matched by the regex (e.g. $user1, etc)
// prop => the captured part of the match (i.e. not including the $)
return replacementsMap[prop];
});
document.getElementById("result").innerHTML = result;
<div id="result"></div>