在 Javascript 中将 $(美元符号)添加到多个数字中

Adding $ (dollar sign) to mutiple numbers in Javascript

本文关键字:添加 数字 符号 中将 Javascript 美元      更新时间:2023-09-26

我有一些包含美元金额和其他文本的文本。一些美元金额有 $ 其他没有。以下是一些示例:

  • 1,000 至 15,000

  • $40

  • 4000

如果尚不存在,我希望在每个数字的开头添加一个 $。我的尝试:

function convertToMoney(text) {
  if (!text.match(/'$/)) {
    return text.replace(/'b(['d,]+)'b/g, function(d) { return('$'+d); });
  }
  return text;
}

如果JS有回头看,我会使用

function convertToMoney(text) {
  return text.replace(/(?<!'$)'b(?:'d)/g, '$');
}

我可以简化我的长解决方案吗?

我可以让它与1000 up to $4000一起工作吗?

更新

应用@jfriend00解决方案后,我的货币过滤器如下所示:

function moneyFilter(text) 
  var ret = text;
  if (ret) {
    ret = ret
      .replace(/'.'d'd/g, '')                  // remove pennies
      .replace(/'B(?=(?:'d{3})+(?!'d))/g, ',') // add comma
      .replace(/('$?)('d['d,]+)/g, "$$$2");    // add dollar sign
  }
  return ret;
})

这个怎么样:

function convertToMoney(text) {
    return text.replace(/('$?)(['d,]+)/g, "$$$2");
}

工作演示:http://jsfiddle.net/jfriend00/y4k3k/

这将查找任何数字序列(可选前面有 $ 符号),并将其替换为美元符号和数字序列。

如果你真的想要正则表达式中的'b,你也可以在这里添加它,但我看不出它一定是必需的。

首先从文本中删除所有 $,然后在每个数字前面插入一个怎么样? 然后,您不必担心检查它是否已经存在。

您可以更正双美元符号。

function convertToMoney(text) {
  if (!text.match(/'$/)) {
    newString = text.replace(/'b(['d,]+)'b/g, function(d) { return('$'+d); });
    return newString.replace(/'${2}/g, '$');
  }
  return text;
}