Javascript - 在可变位置

时间:2017-01-02 21:27:56

标签: javascript string text replace

我有一个存储在数据库中的大文本字段。文本字段在特定位置添加变量,类似于console.log()的工作方式。

“此文本由$ user1在$ date上编写,而$ user1正在使用$ user2来完成$ subject”

然后我可以用正确的动态值替换变量。

如果有一种简单的方法可以解决这个问题,或者我在每个位置拆分字符串然后使用新值进行重建,那就很好奇。

2 个答案:

答案 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>