java - 如何清理和打印 \d{3} \d{3} \d{2} \d{2} 格式的数字
问题描述
使用正则表达式,我需要格式化一个字符串,其中包含数字、字母 az 和 AZ,同时还包含破折号和空格。
从用户输入我有
02-219 8 53 24
输出应该是
022 198 53 24
我正在使用正则表达式
[^A-Za-z0-9\\s.]
和java
String abc = "02-219 8 53 24";
String hello = abc.replaceAll("[^A-Za-z0-9\\s.]", " ");
System.out.println(hello.replaceAll("(\\S\\d{3})", ""));
导致
02 219 8 53 24
解决方案
您可以使用
.replaceAll("\\D+", "").replaceFirst("^(\\d{3})(\\d{3})(\\d{2})(\\d{2})$", "$1 $2 $3 $4")
该.replaceAll("\\D+", "")
部分删除所有非数字字符(因此,有问题的字符串变为 0221985324
),第二replaceFirst("^(\\d{3})(\\d{3})(\\d{2})(\\d{2})$", "$1 $2 $3 $4")
部分将数字分成组并在它们之间插入空格。请参阅此第 2 步的正则表达式演示。
String abc = "02-219 8 53 24";
String hello = abc.replaceAll("\\D+", "");
System.out.println(hello.replaceFirst("^(\\d{3})(\\d{3})(\\d{2})(\\d{2})$", "$1 $2 $3 $4"));
// => 022 198 53 24
推荐阅读
- python-3.x - 如何插入一个 numpy 数组以使其达到一定长度?
- python - 如何将按列和按行的 DataFrame 合并到一维数组中?
- ubuntu - Ansible 命令不是从 rubdeck GUI 运行的
- php - Laravel,如何通过用户 ID 获取最后订单日期
- sed - 如何删除具有特定行号的行并保存已删除的行和其余部分?
- c# - 将 MSProject.Task 转换为 System.Tables?
- angular - (在哪里)在 Angular 8 应用程序中创建 AWS CognitoUserPool
- tomcat - Tomcat通过log4j2访问日志?
- dataframe - pyspark 中的文本词形还原返回 TypeError: 'Column' object is not callable
- vba - 使用 MS Word 的用户表单输入表单字段中的值