javascript - 基于 JavaScript/jQuery 中的格式字符串格式化数字

假设我有一个

  • 格式化字符串“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 函数可以做到这一点?

最佳答案

这是一种方法:

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++);
    });
}

https://stackoverflow.com/questions/3224152/

相关文章:

ruby - 在 ERB 模板中转义换行符/行尾

c# - 在 RichTextBox 中格式化单词

python - 使用 Python 格式化 Excel 中的单元格

java - 如何将日期格式化为大写?

wpf - 格式化 WPF Listview 列以仅显示 2 个小数点。

sql - 计算组百分比到小数点后 2 位 - SQL

kotlin - 如何将粗体、斜体、下划线等格式添加到 Kotlin 文档 (KDoc)

excel - 如何将 Excel 2010 中的条件格式复制到基于其他单元格内容的其他单元格?

text - 如何在 SublimeText 3 中添加具有固定长度和预定义数字的前导零

objective-c - 你如何调整 Xcode 的 Objective C 参数的自动缩进?