javascript - 如何用javascript中的值替换句子中的单词?

标签 javascript string typescript replace

我有以下场景,其中有以下字符串

Edit:  const message = results.doc.data().taskSettings.taskInProgressSettings.pushNotifications.onAssignmentNotifyEmployee.message;

我从 db 得到消息,变量不一定是 taskId , customerName 。它可以是 taskId、customerName、customerId、taskCreaterName、employeeName、employeeId。该消息可能包含上述任何变量,我需要在运行时用它的值替换它们。

message:`Task ${taskId} assigned by ${taskCreaterName} for customer ${customerName}`
let taskId = T-100;
let taskCreaterName = 'mark';
let customerName = 'henry';

我想用它的值替换变量(taskId,taskCreaterName,customername),最终结果应该如下,

newMessage = Task T-100 assigned by mark for customer henry

实现此目标的最佳方法是什么。谢谢

最佳答案

为了以通用方式进行这项工作,您可以保留 1 个对象(例如我在下面创建的“withData”,而不是维护不同的变量)来存储要替换的值,并让通用函数(替换)处理所有更改,如下所示

let message = 'Task ${taskId} assigned by ${taskCreaterName} for customer ${customerName}'

let withData = {
  taskId: 'T-100'
  , taskCreaterName: 'mark'
  , customerName: 'henry'
}

function replace(obj, withData) {
  let result = message.slice(0)
  for (let [key, value] of Object.entries(withData)) {
    result = result.replace('${' + key + '}', value)
  }
  
  return result
}

let result = replace(message, withData)

console.log(result)

// In case Object.entries is not supported
function replace(obj, withData) {
  let result = message.slice(0)
  for (let key in withData) {
    let value = withData[key]
    result = result.replace('${' + key + '}', value)
  }
  
  return result
}

关于javascript - 如何用javascript中的值替换句子中的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53298650/

相关文章:

javascript - 更加模块化;在 .js 文件中包含 html 元素?

javascript - 在页面加载后将js函数变量添加到函数调用中

python - 从空格分隔的字符串创建 Pandas DataFrame

javascript - 如何使用顶级等待将 TypeScript 编译为 JavaScript?

Angular 8 - 路由没有发生 - 垫表行

javascript - ASP.NET Ajax UpdateProgress 在延迟一段时间后加载

Javascript POST 请求不起作用

swift - 无法根据内容大小动态处理单元格大小

java - 如何在 Java 中比较字符串?

angular - Visual Studio Code 无法解析 Angular tsconfig 路径