1

我正在尝试将给定的手机号码格式化为给定的格式。号码将作为一个普通的 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 的另一种方法可以使用连接产生所需的格式。

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

4

2 回答 2

2

你只需要一行

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

此代码产生以下效果:

1232345678 --> (123) 234-5678


这里的道德是:

  • 使用 API(而不是编写自己的代码)
  • 不要使事情过于复杂(当有简单的方法可用时,使用它)
于 2013-01-03T02:18:57.350 回答
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);
}
于 2012-10-23T16:01:25.713 回答