java - DecimalFormat - 它可以处理电话号码、SSN 等吗?
问题描述
我发现以下结果出乎意料:
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
等等...
推荐阅读
- spring - java - 如何在java spring中使用jackson将集合转换为csv?
- vue.js - 在 Vue 中加载静态 HTML 文件
- r - 使用 corclust 的层次聚类
- php - 如何从 www-data 运行 SSH 命令
- c# - 防止从第三个外部类实例化在其外部类中使用的内部类
- python - 如何在 python3 json 列表字典响应中获取/过滤值?
- c++ - eigen 的 C++ 包装类(线性代数库)
- office365 - 如何为启用邮件的安全组创建 ManagementScope?
- typo3 - TYPO3 Extbase:访问外部数据源(外部网络服务)
- ios - Swift iOS 应用程序我应该如何在我的应用程序中管理我的 ViewControllers ?