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

我有一个未格式化的电话号码字符串(“5551234567”)。 我想在ui中格式化此字符串以用于显示目的。 格式后,数字应如下所示:

(555)123-4567

叹…..

我试图找到一种考虑美国和国际电话号码的通用方法。 我来自JDK中的MaskFormatter,但发现Javadoc中存在一个错误。 这引导我在这里问我的问题。 我希望有一个解决方案,我可以输入一个掩码,然后输入实际的字符串。 对于国际/美国号码,输出将相应地格式化,或者如果指定了错误的字符数,则将显示一些默认字符来代替缺少的字符……..

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

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

这是家庭作业吗? 我将把它作为练习让John从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