Rising Sun

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            148 隨筆 :: 0 文章 :: 22 評論 :: 0 Trackbacks

          首先來看問題,然后來看函數的定義,其實什么都在函數定義里面說明白了

          1.正則表達式字符串問題

          首先輸入的regex是一個正則表達式,而不是一個普通的字符串,所以導致很多在正則表達式里面有特殊意義的比如 "." "|" "\" ,如果直接使用是不行的,另外一個方面我們輸入的regex是以字符串形式傳遞的,對有些字符必須要轉義,尤其是"\",下面請看例子

          String[] aa = "aaa|bbb|ccc".split("|");//wrong
          String[] aa = "aaa|bbb|ccc".split("\\|"); //

           

           String[] aa = "aaa*bbb*ccc".split("*");//wrong
           String[] aa = "aaa|bbb|ccc".split("\\*");

           

           String[] aa = "aaa*bbb*ccc".split(".");//wrong
           String[] aa = "aaa|bbb|ccc".split("\\.");

           

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

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

           

          2.數組長度的問題

          String a = "";
          String[] b = a.split(",");
          b.length為 1;
          *
          String a = "c";
          String[] b = a.split(",");
          b.length為 1;
          **
          String a = "c,,,";
          String[] b = a.split(",");
          b.length為 1;
          ***
          String a = "c,,c";
          String[] b = a.split(",");
          b.length為 3;
          ****
          String a = ",";
          String[] b = a.split(",");
          b.length為 0;

           

          其實只要添加一個參數即可,例如

          String str = "abcdef,ghijk,lmno,pqrst,,,";       

          String[] array = str.split(",");
          輸出:abcdef,ghijk,lmno,pqrst,

           

          String str = "abcdef,ghijk,lmno,pqrst,,,";
          String[] array 
          = str.split(",",-1);

          輸出:abcdef,ghijk,lmno,pqrst,,,,

           

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

          最后一個參數limit是影響返回數組的長度的

          =========================請關注紅色字體(括號內為注釋)==========================================

          public String[] split(String regex)

          根據給定的正則表達式的匹配來拆分此字符串。

          該方法的作用就像是使用給定的表達式和限制參數 0 來調用兩參數 split 方法。因此,結果數組中不包括結尾空字符串(直接使用會造成數組大小問題)

          例如,字符串 "boo:and:foo" 產生帶有下面這些表達式的結果:

          Regex結果
          :{ "boo", "and", "foo" }
          o{ "b", "", ":and:f" }

           

          參數:
          regex - 定界正則表達式
          返回:
          字符串數組,根據給定正則表達式的匹配來拆分此字符串,從而生成此數組。

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

          根據匹配給定的正則表達式來拆分此字符串。

          此方法返回的數組包含此字符串的每個子字符串,這些子字符串由另一個匹配給定的表達式的子字符串終止或由字符串結束來終止。數組中的子字符串按它們在此字符串中的順序排列。如果表達式不匹配輸入的任何部分,則結果數組只具有一個元素,即此字符串。

          limit 參數控制模式應用的次數,因此影響結果數組的長度如果該限制 n 大于 0,則模式將被最多應用 n - 1 次,數組的長度將不會大于 n,而且數組的最后項將包含超出最后匹配的定界符的所有輸入。如果 n 為非正,則模式將被應用盡可能多的次數,而且數組可以是任意長度。如果 n 為零,則模式將被應用盡可能多的次數,數組可有任何長度,并且結尾空字符串將被丟棄

          例如,字符串 "boo:and:foo" 使用這些參數可生成下列結果:

          RegexLimit結果
          :2{ "boo", "and:foo" }
          :5{ "boo", "and", "foo" }
          :-2{ "boo", "and", "foo" }
          o5{ "b", "", ":and:f", "", "" }
          o-2{ "b", "", ":and:f", "", "" }
          o0{ "b", "", ":and:f" }

          這種形式的方法調用 str.split(regex, n) 產生與以下表達式完全相同的結果:

          Pattern.compile(regex).split(str, n)

           

          參數:
          regex - 定界正則表達式
          limit - 結果閾值,如上所述
          返回:
          字符串數組,根據給定正則表達式的匹配來拆分此字符串,從而生成此數組

           

          posted on 2014-04-28 10:15 brock 閱讀(261) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 双峰县| 棋牌| 绥化市| 洛南县| 腾冲县| 福州市| 大化| 砀山县| 上高县| 土默特右旗| 沛县| 谢通门县| 长宁区| 乌拉特前旗| 沂水县| 望奎县| 手机| 贵南县| 靖边县| 龙门县| 邹城市| 彭泽县| 扎鲁特旗| 清原| 日土县| 获嘉县| 彰化市| 色达县| 海盐县| 澄城县| 嵊州市| 左贡县| 长汀县| 波密县| 盱眙县| 始兴县| 策勒县| 怀安县| 通榆县| 永吉县| 霞浦县|