【问题标题】:String.replace for multiple unique characters and replacementsString.replace 用于多个唯一字符和替换
【发布时间】:2015-12-01 18:47:29
【问题描述】:

在阅读了 MDN 文档以及 W3schools 之后,我仍然不确定如何使用 .replace 将多个特殊字符全部替换为它们自己的唯一替换。

因此,如果我编写一个将字符串作为参数的函数,则该字符串可能每次都不同,每个字符串中都有特殊字符。我希望能够编写一个替换语句来检查这些特殊字符,然后根据找到的特殊字符,用相应的唯一替换替换该字符。

举个例子,如果我传递一个像 dave & dave 这样的字符串,我可能想用字符“and”替换 & 符号,这很简单,但是如果传递给函数的下一个字符串有一个$ 我想用“美元”替换。

我可以为单个唯一字符创建这样的函数,替换如下:

string.replace(/&/g, "and");

但我不确定如何检查多个字符,然后用特定的唯一替换项替换。

【问题讨论】:

  • 你可以像string.replace(/&/g,'and').replace(/$/g,'dollar');一样堆叠replace
  • @depperm:这叫做chaining
  • @Chirpizard:看到这个demo
  • @stribizhev 不错的解决方案,类似于下面发布的解决方案。我认为这个实际上更容易理解。感谢分享!
  • 好的,我会把你的问题作为Efficiently replace all accented characters in a string?的骗子来结束,但是......不。

标签: javascript regex


【解决方案1】:

您可以使用替换功能,例如:

var st = "& $ % !";

var replaced = st.replace(/[&$%!]/g, 
  function(piece) {
    var replacements = {
      "&": "and",
      "$": "dollar",
      "%": "pct",
      "!": "bang"
    };
  
    return replacements[piece] || piece;
  });

console.log(replaced);

【讨论】:

  • 这确实有效!我唯一不明白的是传递给函数的piece 参数。要替换的piece/symbol 如何作为参数传递?也感谢这个解决方案!
  • 这就是replace 所做的,当您将函数作为第二个参数传递时。它将每个匹配项传递给您的函数,然后您返回该匹配项的替换项。
  • 太棒了。谢谢你的解释!
猜你喜欢
  • 2013-06-02
  • 1970-01-01
  • 2018-04-04
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-12
  • 1970-01-01
相关资源
最近更新 更多