【问题标题】:Format Number based on Format String in JavaScript/jQuery基于 JavaScript/jQuery 中的格式字符串格式化数字
【发布时间】:2010-07-11 18:17:41
【问题描述】:

假设我有一个

  • 格式字符串“XXX - XXX - XXXX”(用于格式化电话号码),或任何其他 X 代表数字的格式字符串
  • 我想保留格式字符串中的格式(间距、破折号等),但将每个 X 换成一个数字并删除源字符串中的所有格式

例子:

  • 输入:“abc+d(123)4567890”,格式字符串:“XXX - XXX - XXXX”,输出:“123 - 456 - 7890”
  • 输入“a b c 1 2 3 4567890”,格式字符串:“X:X!XXXXX,XXX”,输出:“1:2!34567,890”
  • 输入“1234567890”,格式字符串:“(XXX)XXX-XXXX”,输出:“(123)456-7890”

我想我可以通过遍历源字符串('0123456789' 中的 foreach 字符)来获取数字,但我不确定如何才能优雅地将它们组合成正确的格式。也许已经有一个 jQuery 函数可以做到这一点?

【问题讨论】:

    标签: javascript jquery formatting string-formatting


    【解决方案1】:

    这是一种方法:

    function formatPhoneNumber(input, format) {
        // Strip non-numeric characters
        var digits = input.replace(/\D/g, '');
    
        // Replace each "X" with the next digit
        var count = 0;
        return format.replace(/X/g, function() {
            return digits.charAt(count++);
        });
    }
    

    【讨论】:

      【解决方案2】:
      "abc+d(123)4567890"
      .replace(/\D/g, "")
      .replace(/(\d{3})(\d{3})(\d{4})/, "$1 - $2 - $3")
      

      首先我们删除非数字 (\D),然后对它们进行分组,最后在替换文本中使用这些组。

      【讨论】:

      • 对不起,我不清楚格式字符串可能不同(例如可以更改为 X-XXX-XX-XX),因此它需要能够处理一般格式。
      猜你喜欢
      • 2014-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-17
      • 1970-01-01
      相关资源
      最近更新 更多