0

我需要一个 JavaScript 函数,它以一个字符串作为输入,用相应的值替换许多子字符串,然后返回结果。例如:

function findreplace(inputStr) {
    const values = {"a": "A",
              "B": "x",
              "c": "C"};

    // In this example, if inputStr is "abc", then outputStr should be "AbC".

    return outputStr
}

我知道如何单独查找和替换,但我想知道是否有一种简单的方法可以同时处理多对(区分大小写)值。

谢谢!

4

2 回答 2

1

您可以join keys构建一个正则表达式,然后replace相应地

function findreplace(inputStr) {
  let values = { "a": "A", "B": "x", "c": "C" };
  let regex = new RegExp("\\b" + Object.keys(values).join('|') + "\\b", 'g')
  return inputStr.replace(regex, (m) => values[m] )
}

console.log(findreplace('aBc'))
console.log(findreplace('AbC'))
console.log(findreplace('ABC'))

于 2019-10-13T18:24:37.203 回答
1

values只需在以下帮助下进行迭代Object.entries(values)

function findreplace(inputStr) {
  const values = {
    "a": "A",
    "B": "x",
    "c": "C"
  };
  for (const [search, replace] of Object.entries(values)) {
    inputStr = inputStr.replace(search, replace);    
  }
  return inputStr;
}

console.log(findreplace("abc"));

于 2019-10-13T18:26:08.963 回答