1. 程式人生 > >split()方法分割字串中的問題

split()方法分割字串中的問題

使用split()方法可以是字串按指定的分割字元或字串對內容進行分割,並將分割後的結果存放在字串陣列中。split()方法提供了以下兩種過載形式:
(1)split(String sign)
該方法可根據給定的分割符對字串進行拆分。
語法如下:

str.split(String sign)

其中,sign未分割字串的分隔符,也可以使用正則表示式。

(2)split(String sign , int limit)

該方法可以根據給定的分割符對字串進行拆分,並限定拆分的次數。
語法如下:

str.split(String sign , int limit)

sign : 分割字串的分隔符,也可以使用正則表示式。
limit:限制的分割次數。(等於分割後字元陣列的元素個數)

在使用過程中,發現如果字串中有“.”,並且想用“.”來分隔字串,出現瞭如下問題:

程式碼1:

        System.out.println("***********");
        String s13 = new String("abc.def.ghi.gkl");
        String[] s14 = s13.split(".",2);
        for (int i = 0; i < s14.length; i++) {
            System.out.println(s14[i]);
        }
        System.out
.println("-----------");

執行結果:

這裡寫圖片描述

結果顯示分解後產生了2個字串:“ ”和“bc.def.ghi.gkl”

如果程式碼改為
程式碼2:

        System.out.println("***********");
        String s13 = new String("abc.def.ghi.gkl");
        String[] s14 = s13.split(".");
        for (int i = 0; i < s14.length; i++) {
            System.out.println
(s14[i]); } System.out.println("-----------");

結果:

這裡寫圖片描述

進一步,將程式碼改為
程式碼3:

        System.out.println("***********");
        String s13 = new String("abc/def/ghi/gkl");
        String[] s14 = s13.split("./");
        for (int i = 0; i < s14.length; i++) {
            System.out.println(s14[i]);
        }

        System.out.println("-----------");

結果:

這裡寫圖片描述

經驗證,這時因為“.”在正則表示式中匹配除“\r\n”外的任何單個字元。

想要用“.”來分割字串的正確程式碼:

        System.out.println("***********");
        String s13 = new String("abc.def.ghi.gkl");
        String[] s14 = s13.split("\\.");
        for (int i = 0; i < s14.length; i++) {
            System.out.println(s14[i]);
        }

        System.out.println("-----------");

結果:

這裡寫圖片描述