如鵬網(wǎng) 大學(xué)生計(jì)算機(jī)學(xué)習(xí)社區(qū)

          CowNew開(kāi)源團(tuán)隊(duì)

          http://www.cownew.com 郵件請(qǐng)聯(lián)系 about521 at 163.com

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            363 隨筆 :: 2 文章 :: 808 評(píng)論 :: 0 Trackbacks

          雖然使用正則表達(dá)式能很好的進(jìn)行字符串的解析、提取、替換,但是對(duì)于一些簡(jiǎn)單的應(yīng)用,使用 String 類提供的一些方法就可以很好的完成,最突出的就是 split 方法。

          split 方法能夠很方便的將字符串按照一定的規(guī)則拆分開(kāi)。

          比如對(duì)于下面的字符串:

          Tom,Jane,Tony,Elva,Gigi

          只要調(diào)用如下的代碼就可以將各個(gè)名字提取出來(lái):

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

          }

          運(yùn)行結(jié)果:

          Tom

          Jane

          Tony

          Elva

          Gigi

          ?

          看到這個(gè)運(yùn)行結(jié)果,很多人都認(rèn)為 split 方法就是按照給定的字符串對(duì)字符串進(jìn)行拆分,知道碰到了下面的問(wèn)題。

          有一個(gè)字符串:中國(guó) . 北京 . 海淀 . 學(xué)院路。請(qǐng)解析此字符串,并打印輸出“中國(guó) 北京 海淀 學(xué)院路 ”。

          于是寫代碼如下:

          String value = " 中國(guó) . 北京 . 海淀 . 學(xué)院路 ";

          String[] names = value.split(".");

          for(int i=0,n=names.length;i<n;i++)

          {

          ???? System.out.print(names[i]+" ");

          }

          運(yùn)行結(jié)果:

          ?

          對(duì),沒(méi)看錯(cuò)!沒(méi)有任何輸出!

          讓我們來(lái)看看 split 方法的方法簽名吧:

          public String[] split(String regex)

          這里的參數(shù)的名稱是 regex ,也就是 Regular Expression (正則表達(dá)式)。這個(gè)參數(shù)并不是一個(gè)簡(jiǎn)單的分割用的字符,而是一個(gè)正則表達(dá)式,看了 split 方法的實(shí)現(xiàn)代碼就更堅(jiān)定了我們的信心:

          public String[] split(String regex, int limit) {

          ???? return Pattern.compile(regex).split(this, limit);

          }

          split 的實(shí)現(xiàn)直接調(diào)用的 Matcher 類的 split 的方法。讀者已經(jīng)知道,“ . ”在正則表達(dá)式中有特殊的含義,因此我們使用的時(shí)候必須進(jìn)行轉(zhuǎn)義。

          修改代碼如下:

          private static void split2()

          {

          ???? String value = " 中國(guó) . 北京 . 海淀 . 學(xué)院路 ";

          ???? String[] names = value.split("\\.");

          ???? for(int i=0,n=names.length;i<n;i++)

          ???? {

          ???????? System.out.print(names[i]+" ");

          ???? }

          }

          運(yùn)行結(jié)果

          中國(guó) 北京 海淀 學(xué)院路

          posted on 2007-01-20 23:38 CowNew開(kāi)源團(tuán)隊(duì) 閱讀(2842) 評(píng)論(9)  編輯  收藏

          評(píng)論

          # re: xjl:關(guān)于String類的split方法 2007-01-22 10:39 ChairMan 貓
          是需要轉(zhuǎn)義一下。  回復(fù)  更多評(píng)論
            

          # re: xjl:關(guān)于String類的split方法 2007-01-22 10:49 BeanSoft
          頂一個(gè)!  回復(fù)  更多評(píng)論
            

          # re: xjl:關(guān)于String類的split方法 2007-01-22 11:40 Yu-peng Cun
          好貼,長(zhǎng)了見(jiàn)識(shí)  回復(fù)  更多評(píng)論
            

          # re: xjl:關(guān)于String類的split方法 2007-01-22 15:04 青山綠水
          謝謝,我曾經(jīng)也遇到過(guò)這種事情,但我常用stoken,長(zhǎng)知識(shí)了。  回復(fù)  更多評(píng)論
            

          # re: xjl:關(guān)于String類的split方法 2007-01-23 09:07 小貓
          頂一個(gè)!  回復(fù)  更多評(píng)論
            

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

          # re: xjl:關(guān)于String類的split方法 2007-01-25 12:06 Web 2.0 技術(shù)資源
          雖然使用正則表達(dá)式能很好的進(jìn)行字符串的解析、提取、替換,但是對(duì)于一些簡(jiǎn)單的應(yīng)用,使用 String 類提供的一些方法就可以很好的完成,最突出的就是 split 方法。

          和后面說(shuō)的矛盾了..........  回復(fù)  更多評(píng)論
            

          # re: xjl:關(guān)于String類的split方法 2007-01-25 12:47 CowNew開(kāi)源團(tuán)隊(duì)
          @Web 2.0 技術(shù)資源
          謝謝。這段文字是從我的那本書中作廢下來(lái)的一段,如果結(jié)合上下文就不矛盾了。:)  回復(fù)  更多評(píng)論
            

          # re: xjl:關(guān)于String類的split方法 2007-03-26 15:49 flyzl
          Matcher 類沒(méi)有 split 方法
          是同包下的 Pattern 類  回復(fù)  更多評(píng)論
            


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 息烽县| 海伦市| 临海市| 宁波市| 从化市| 富阳市| 县级市| 梨树县| 胶州市| 茂名市| 田林县| 双柏县| 皮山县| 馆陶县| 太谷县| 凌源市| 古浪县| 昌黎县| 兴海县| 新竹县| 垫江县| 胶南市| 车险| 玛沁县| 榕江县| 伊金霍洛旗| 衡阳县| 新巴尔虎右旗| 巨野县| 海晏县| 铁岭县| 佛冈县| 子长县| 永州市| 观塘区| 孝义市| 双柏县| 札达县| 军事| 芮城县| 长治县|