2 回答
TA贡献1852条经验 获得超7个赞
您可以使用
.replaceAll("\\D+", "").replaceFirst("^(\\d{3})(\\d{3})(\\d{2})(\\d{2})$", "$1 $2 $3 $4")该部分删除所有非数字字符(因此,有问题的字符串变为 ),第二部分将数字拆分为组并在它们之间插入空格。请参阅此步骤 2 的正则表达式演示。.replaceAll("\\D+", "")0221985324replaceFirst("^(\\d{3})(\\d{3})(\\d{2})(\\d{2})$", "$1 $2 $3 $4")
爪哇演示:
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
TA贡献1866条经验 获得超5个赞
您可以使用正则表达式通过删除非数字字符,但不需要它来格式化输出字符串。为此,您可以直接使用字符串格式()方法或 printf()\D
String input = "02-219 8 53 24";
Object[] charObjectArray =
input.replaceAll("\\D", "").chars().mapToObj(c -> (char)c).toArray(Character[]::new);
if(charObjectArray.length>=10)
System.out.printf("%c%c%c %c%c%c %c%c %c%c%n", charObjectArray);
else
System.out.println("Invalid input string");
输出:
022 198 53 24
添加回答
举报
