網頁

2017/9/19

Java 使用空白分割字串

在Java中若要以字串中的空白來分割字串,可以用String.split("\\s+")


這邊的空白是指包含任意長度的whitespace,包括換行\n及tab\t

參數\\s+正則表示式(Regular Expression),用來表示一個空白加上後面任意長度的空白。

因為後斜線\在Java程式中有特殊的意義,所以要改成跳脫字元(escape character)\\。後面的加號+表示前一個字符有一個或多個,而前一個字符為\\s所以代表一個或多個空白。

String s = "this        is  a book";
String[] ss = s.split("\\s+"); // "\\s+" 是正則表示式,代表至少一個或多個空白。
System.out.println(Arrays.toString(ss)); // [this, is, a, book]

若只要用換行符號分割字串,則使用split("\\n")

String s = "台北 文山\n新竹 竹南\n高雄 左營";
String[] ss = s.split("\\n+");
System.out.println(Arrays.toString(ss)); // [台北 文山, 新竹 竹南, 高雄 左營]

雖然很少發生,下面再多考慮前後有空白,全型空白與使用Java 8 Optional處理null的情況。

String s = "   a  b    c    d   e    ";
String[] ss = s.replaceAll(" ", " ").trim().split("\\s+");
System.out.println(Arrays.toString(ss)); // [a, b, c, d, e]

參考:

沒有留言:

張貼留言