DecimalFormat - 它可以处理电话号码,SSN等吗?

问题描述 投票:2回答:1

我发现了以下意外结果:

format           number          result            expected
"000-00-0000"    123456789L      "123456789--"     "123-45-6789"
"(###)###-####"  1234567890L     "(1234567890)-"   "(123)456-7890"
"_($* "-"_)"     0               " $ \t- 0"         " $ \t- "

它不能处理电话号码,社会安全号码等非数字格式吗?

java decimalformat
1个回答
0
投票

它可能被黑客攻击,但它并没有为此目的而创建。这些任务可以通过正则表达式来处理,并且更加有效和富有表现力。

第一个例子可以简化为以下内容

String regex = "^(\\d{3})(\\d{2})(\\d{4})$";
String input = 123456789L + "";

System.out.println(input.replaceAll(regex, "$1-$2-$3")); // 123-45-6789

以下是第二个

String regex = "^(\\d{3})(\\d{3})(\\d{4})$";
String input = 1234567890L + "";

System.out.println(input.replaceAll(regex, "($1)$2-$3")); // (123)456-7890

等等...

© www.soinside.com 2019 - 2024. All rights reserved.