如鵬網 大學生計算機學習社區

          CowNew開源團隊

          http://www.cownew.com 郵件請聯系 about521 at 163.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            363 隨筆 :: 2 文章 :: 808 評論 :: 0 Trackbacks

          雖然使用正則表達式能很好的進行字符串的解析、提取、替換,但是對于一些簡單的應用,使用 String 類提供的一些方法就可以很好的完成,最突出的就是 split 方法。

          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]+" ");

          ???? }

          }

          運行結果

          中國 北京 海淀 學院路

          posted on 2007-01-20 23:38 CowNew開源團隊 閱讀(2842) 評論(9)  編輯  收藏

          評論

          # re: xjl:關于String類的split方法 2007-01-22 10:39 ChairMan 貓
          是需要轉義一下。  回復  更多評論
            

          # re: xjl:關于String類的split方法 2007-01-22 10:49 BeanSoft
          頂一個!  回復  更多評論
            

          # re: xjl:關于String類的split方法 2007-01-22 11:40 Yu-peng Cun
          好貼,長了見識  回復  更多評論
            

          # re: xjl:關于String類的split方法 2007-01-22 15:04 青山綠水
          謝謝,我曾經也遇到過這種事情,但我常用stoken,長知識了。  回復  更多評論
            

          # re: xjl:關于String類的split方法 2007-01-23 09:07 小貓
          頂一個!  回復  更多評論
            

          # re: xjl:關于String類的split方法 2007-01-23 19:03 lang
          建議試驗一下org.apache.commons.lang.stringutils.split(value,".");  回復  更多評論
            

          # re: xjl:關于String類的split方法 2007-01-25 12:06 Web 2.0 技術資源
          雖然使用正則表達式能很好的進行字符串的解析、提取、替換,但是對于一些簡單的應用,使用 String 類提供的一些方法就可以很好的完成,最突出的就是 split 方法。

          和后面說的矛盾了..........  回復  更多評論
            

          # re: xjl:關于String類的split方法 2007-01-25 12:47 CowNew開源團隊
          @Web 2.0 技術資源
          謝謝。這段文字是從我的那本書中作廢下來的一段,如果結合上下文就不矛盾了。:)  回復  更多評論
            

          # re: xjl:關于String類的split方法 2007-03-26 15:49 flyzl
          Matcher 類沒有 split 方法
          是同包下的 Pattern 類  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 丹凤县| 荃湾区| 威信县| 交口县| 镇坪县| 天等县| 泰和县| 祁东县| 桃园县| 东城区| 明星| 宁武县| 依兰县| 呼伦贝尔市| 花莲市| 保定市| 临沧市| 深圳市| 湖州市| 福清市| 高邑县| 灌阳县| 讷河市| 勐海县| 朝阳市| 错那县| 饶河县| 忻城县| 额敏县| 广德县| 永善县| 永清县| 章丘市| 清镇市| 平遥县| 襄汾县| 海安县| 通化县| 哈尔滨市| 谷城县| 上虞市|