Java:将字符串格式化为电话号码

4
我有一个未格式化的电话号码字符串(“5551234567”)。我想为 UI 的显示目的格式化此字符串。格式化后,该号码应该像这样:

(555) 123-4567

唉......

我试图找到一种通用方法,既可以考虑美国电话号码,也可以考虑国际电话号码。我发现 JDK 中的 MaskFormatter,但发现 Javadoc 中存在错误。这让我在这里询问我的问题。我希望能够输入掩码和实际字符串来解决问题。输出将相应地格式化为国际/美国数字,或者如果指定了错误数量的字符,则会在缺少的字符位置显示某些默认字符。

http://www.java.net/node/660119


我们的非美国朋友们怎么样? - Anders
@JohnConnor 现在我必须知道。http://download.oracle.com/javase/6/docs/api/javax/swing/text/MaskFormatter.html 中的 bug 是什么? - dlamblin
如果您真的尝试运行这段代码,您就会看到问题。 - Justin Kredible
2个回答

20
String.format("(%s) %s-%s", number.substring(0, 3), number.substring(3, 6), 
          number.substring(6, 10));

1

这是作业吗?我会把它留给约翰来将其从Perl转换为Java。应该很简单;特别是有像http://www.regexbuddy.com/这样的工具。

:~$ perl -pe 's/\D//g;s/^(\d{3})(\d{3})(\d{0,4})(\d*)/(\1) \2-\3/'
5551234567
(555) 123-4567

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接