七年的愛
          手中沒有劍,我如何保護(hù)她;手中握著劍,我如何抱緊她!
          posts - 7,comments - 3,trackbacks - 0
           
          在使用String.split方法分隔字符串時(shí),分隔符如果用到一些特殊字符,可能會(huì)得不到我們預(yù)期的結(jié)果。 我們看jdk doc中說明:

          public String[] split(String regex)

          Splits this string around matches of the given regular expression .
             
          參數(shù)regex是一個(gè) regular-expression的匹配模式而不是一個(gè)簡(jiǎn)單的String,他對(duì)一些特殊的字符可能會(huì)出現(xiàn)你預(yù)想不到的結(jié)果,比如測(cè)試下面的代碼:

          用豎線 | 分隔字符串,你將得不到預(yù)期的結(jié)果
              String[] aa = "aaa|bbb|ccc".split("|");
             //String[] aa = "aaa|bbb|ccc".split("\\|");
          這樣才能得到正確的結(jié)果

              for (int i = 0 ; i
                System.out.println("--"+aa[i]);
              }

          用豎 * 分隔字符串運(yùn)行將拋出java.util.regex.PatternSyntaxException異常
          ,用加號(hào)
          + 也是如此。

              String[] aa = "aaa*bbb*ccc".split("*");
              //String[] aa = "aaa|bbb|ccc".split("\\*");
          這樣才能得到正確的結(jié)果   

              for (int i = 0 ; i
                System.out.println("--"+aa[i]);
              }

                顯然,+ * 不是有效的模式匹配規(guī)則表達(dá)式,用"\\*" "\\+"轉(zhuǎn)義后即可得到正確的結(jié)果。 "|" 分隔串時(shí)雖然能夠執(zhí)行,但是卻不是預(yù)期的目的,"\\|"轉(zhuǎn)義后即可得到正確的結(jié)果。

                 還有如果想在串中使用"\"字符,則也需要轉(zhuǎn)義.首先要表達(dá)"aaaa\bbbb"這個(gè)串就應(yīng)該用"aaaa\\bbbb",如果要分隔就應(yīng)該這樣才能得到正確結(jié)果:

          String[] aa = "aaa\\bbb\\bccc".split("\\\\");


          最后,請(qǐng)運(yùn)行這個(gè)程序,并更正程序中的錯(cuò)誤:

          public class Untitled1 {
          public static void main(String[] args) {
          String aa = "123|-|abc|-|edf|-|ghi|-|432|-|dfa";
          String[] a = aa.split("|-|"); //這里改成 aa.split("\\|\\-\\|") 才能得到正確結(jié)果
          int i;
          for(i=0;i< a.length;i++)
          System.out.println(a[i]);
          }
          }


          ========================

          在java.lang包中有String.split()方法,返回是一個(gè)數(shù)組
          我在應(yīng)用中用到一些,給大家總結(jié)一下,僅供大家參考:
          1、如果用“.”作為分隔的話,必須是如下寫法:String.split("\\."),這樣才能正確的分隔開,不能用String.split(".");
          2、如果用“|”作為分隔的話,必須是如下寫法:String.split("\\|"),這樣才能正確的分隔開,不能用String.split("|");
          “.”和“|”都是轉(zhuǎn)義字符,必須得加"\\";
          3、如果在一個(gè)字符串中有多個(gè)分隔符,可以用“|”作為連字符,比如:“acount=?
          and uu =? or n=?”,把三個(gè)都分隔出來,可以用String.split("and|or");
          posted on 2007-10-09 10:06 逝去的圣男 閱讀(172) 評(píng)論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 建德市| 静海县| 南宫市| 娄烦县| 罗江县| 白河县| 阿克苏市| 卢湾区| 肥城市| 临安市| 平罗县| 巴青县| 漳州市| 武清区| 独山县| 齐齐哈尔市| 高唐县| 涿州市| 枣阳市| 湾仔区| 彭泽县| 扶绥县| 大埔区| 江源县| 普宁市| 安塞县| 西盟| 清苑县| 阳泉市| 枣强县| 阳高县| 沙河市| 西藏| 育儿| 江达县| 汶上县| 出国| 兴仁县| 修武县| 洪江市| 永济市|