我发现了以下意外结果:
format number result expected
"000-00-0000" 123456789L "123456789--" "123-45-6789"
"(###)###-####" 1234567890L "(1234567890)-" "(123)456-7890"
"_($* "-"_)" 0 " $ \t- 0" " $ \t- "
它不能处理电话号码,社会安全号码等非数字格式吗?
它可能被黑客攻击,但它并没有为此目的而创建。这些任务可以通过正则表达式来处理,并且更加有效和富有表现力。
第一个例子可以简化为以下内容
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
等等...