根据给定的格式格式化数字

时间:2012-10-23 15:45:35

标签: java regex

我正在尝试将给定的手机号码格式化为给定的格式。数字将作为普通的10位数字存储在数据库中,并在UI中显示我需要格式化此号码。

我正在使用JSTL在JSP端显示它。我计划创建一个自定义函数,该函数应接受手机号码/电话号码和所需格式,并将返回所需格式的数字,如

(xxx)xxx-xxx XXX-XXX-XXX

我试图根据regExp分割给定的电话号码但不太确定如何执行此操作

String phoneNumber="1232345678";
Pattern pattern=Pattern.compile("\\d{3}\\d{3}\\d{4}");
String [] s=pattern.split(phoneNumber);

分割给定字符串和den的另一种方法是使用连接产生所需的格式。

实现这一目标的最佳方式是什么

2 个答案:

答案 0 :(得分:2)

您只需要一行

String output = phoneNumber.replaceAll("(\\d{3})(\\d{3})(\\d{4})", "($1) $2-$3");

此代码产生以下效果:

1232345678 --> (123) 234-5678


这里的道德是:

  • 使用API​​(而不是编写自己的代码)
  • 不要过于复杂(当一个简单的方法可用时,使用它)

答案 1 :(得分:0)

看看蛮力解决方案:

只需将格式设置为“(xxx)xxx-xxxx”,代码将用电话号码中的数字替换x。

public static String format(String number, String format) {
    char[] arr = new char[format.length()];
    int i = 0;
    for (int j = 0; j < format.length(); j++) {
        if (format.charAt(j) == 'x')
            arr[j] = number.charAt(i++);
        else
            arr[j] = format.charAt(j);
    }

    return new String(arr);
}