在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]
參考:
沒有留言:
張貼留言