2 回答

TA貢獻1852條經驗 獲得超7個贊
您可以使用
.replaceAll("\\D+", "").replaceFirst("^(\\d{3})(\\d{3})(\\d{2})(\\d{2})$", "$1 $2 $3 $4")
該部分刪除所有非數字字符(因此,有問題的字符串變為 ),第二部分將數字拆分為組并在它們之間插入空格。請參閱此步驟 2 的正則表達式演示。.replaceAll("\\D+", "")
0221985324
replaceFirst("^(\\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
添加回答
舉報