基于对规则的字符串替换词

问题描述 投票:0回答:2

我有一个这样的字符串

"Hello {{firstName}}, this is {{senderName}}."

规则

rules = {
  firstName: "Alex",
  senderName: "Tracy"
}

预计结果

"Hello Alex, this is Tracy."

我想一个通用的功能,任何字符串与相应的规则转换为新的字符串。

另一个例子:

let array = "Hello {{firstName}} {{lastName}}, this is {{senderName}}."
rules = {
  firstName: "Alex",
  lastName: "James",
  senderName: "Tracy"
}
expectedResult = "Hello Alex James, this is Tracy." 

任何帮助伤口可以理解的。

typescript
2个回答
1
投票

你可以采取一个可以传递到replacement function一个String.prototype.replace的优势:

const str = "Hello {{firstName}} {{lastName}}, this is {{senderName}}."
const mapping = {
  firstName: "Alex",
  lastName: "James",
  senderName: "Tracy"
}
const compile = (template, rules) => template.replace(/{{(.+?)}}/g, (match, group) => rules[group]);

const result = compile(str, mapping);
console.log(result);

2
投票

可以遍历和替换所有值变量

    function resolve_str(rules,str){
      for(let i in rules){
        str = str.replace("{{"+i+"}}", rules[i]);
      }
      return str;
    }

    let array = "Hello {{firstName}} {{lastName}}, this is {{senderName}}."
    rules = {
      firstName: "Alex",
      lastName: "James",
      senderName: "Tracy"
    }

    console.log(resolve_str(rules,array));
© www.soinside.com 2019 - 2024. All rights reserved.