天天看點

xjl:關于String類的split方法

雖然使用正規表達式能很好的進行字元串的解析、提取、替換,但是對于一些簡單的應用,使用 String 類提供的一些方法就可以很好的完成,最突出的就是 split 方法。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

split 方法能夠很友善的将字元串按照一定的規則拆分開。

比如對于下面的字元串:

Tom,Jane,Tony,Elva,Gigi

隻要調用如下的代碼就可以将各個名字提取出來:

String value = "Tom,Jane,Tony,Elva,Gigi"; String[] names = value.split(","); for(int i=0,n=names.length;i<n;i++) {      System.out.println(names[i]); } 運作結果:

Tom Jane Tony Elva Gigi

看到這個運作結果,很多人都認為 split 方法就是按照給定的字元串對字元串進行拆分,知道碰到了下面的問題。 有一個字元串:中國 . 北京 . 海澱 . 學院路。請解析此字元串,并列印輸出“中國 北京 海澱 學院路 ”。 于是寫代碼如下:

String value = " 中國 . 北京 . 海澱 . 學院路 "; String[] names = value.split("."); for(int i=0,n=names.length;i<n;i++) {      System.out.print(names[i]+" "); } 運作結果:

對,沒看錯!沒有任何輸出!

讓我們來看看 split 方法的方法簽名吧:

public String[] split(String regex) 這裡的參數的名稱是 regex ,也就是 Regular Expression (正規表達式)。這個參數并不是一個簡單的分割用的字元,而是一個正規表達式,看了 split 方法的實作代碼就更堅定了我們的信心:

public String[] split(String regex, int limit) {      return Pattern.compile(regex).split(this, limit); } split 的實作直接調用的 Matcher 類的 split 的方法。讀者已經知道,“ . ”在正規表達式中有特殊的含義,是以我們使用的時候必須進行轉義。

修改代碼如下:

private static void split2() {      String value = " 中國 . 北京 . 海澱 . 學院路 ";      String[] names = value.split("\\.");      for(int i=0,n=names.length;i<n;i++)      {          System.out.print(names[i]+" ");      } } 運作結果 :

中國 北京 海澱 學院路

轉載于:https://blog.51cto.com/cownew/86958