【问题标题】:how to replace string which is the key of Json object value Using NodeJS如何使用NodeJS替换作为Json对象值键的字符串
【发布时间】:2021-12-23 22:25:25
【问题描述】:
const sentence = ' Name: ${fname} ${lname} </br> Email: ${email} </br> ' 

let valuesObj={
  "fname": "sant",
  "lname": "G",
  "email": "Test@test.com"
}

试过这段代码但没有用:

function replaceAll(str, map){
  for(key in map){
    str = str.replaceAll(key, map[key]);
  }
  return str;
}

var newString = replaceAll(sentence , valuesObj);

console.log(newString)

预期输出是:

名称:sant G

电子邮件:Test@test.com

如何使用 NodeJs 或 Javascript 来做到这一点

【问题讨论】:

  • sentence = `Name: ${values.fname} ${values.lname} Email: ${values.email}`
  • 嘿,我需要用 Sant 动态替换 ${fname}。
  • 动态替换是什么意思?
  • 类似于下面的代码 const replaceManyStr = (values, sentence) => values.reduce((f, s) => ${f}.replace(values.keys(s)[0], s [values.keys(s)[0]]), 句子)
  • 请不要在 cmets 中发布代码。它不可读。编辑您的问题并在那里澄清。

标签: javascript node.js node-modules


【解决方案1】:

这里不要使用替换功能。改为:

const valuesObj = {
  fname: 'sant',
  lname: 'G',
  email: 'Test@test.com'
};

const sentence = `Name: ${valuesObj.fname} ${valuesObj.lname} </br> Email: ${valuesObj.email} </br>`;

如果您的字符串是动态创建的,您正在寻找类似于this 的行为。

【讨论】:

  • 这正是我在我的 cmets 中描述的,而 OP 不想要
  • 我认为 OP 不理解您的评论,尽管您的评论是对的
  • 我认为变量sentence是动态读取或创建的。
  • 谢谢,我编辑了我的答案,为类似 sprintf 的函数添加了引用
【解决方案2】:

您忘记了替换方法中的美元符号 ($) 和方括号 ({...}):

const sentence = ' Name: ${fname} ${lname} </br> Email: ${email} </br> ';

const valuesObj = {
  "fname": "sant",
  "lname": "G",
  "email": "Test@test.com"
};

function replaceAll(str, map) {
  return Object.entries(map).reduce((s, [key, value]) => s.replaceAll(`\${${key}}`, value), str);
}

const newString = replaceAll(sentence, valuesObj);

console.log(newString);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-04
    • 2019-12-26
    • 2022-06-15
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    • 2016-11-22
    • 2016-12-07
    相关资源
    最近更新 更多