最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中String.split()的最詳細源碼解讀及注意事項

 更新時間:2022年07月26日 13:14:10   作者:Killing?Vibe  
以前經(jīng)常使用String.split()方法,但是從來沒有注意,下面這篇文章主要給大家介紹了關(guān)于Java中String.split()最詳細源碼解讀及注意事項的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下

前言

博主針對字符串分割時出現(xiàn)的各種空字符串問題,進入String類的源碼看了一下,現(xiàn)作如下解讀及演示:

一、split(regex,limit)

首先是帶有兩個參數(shù)的split方法:

作用:

將以給定正則表達式(regex)的字符串分隔開來

  • 第一個參數(shù)是傳入字符類型的分隔符,如 “,” 等(可以是任何字符串)
  • 第二個參數(shù)傳入整型的limit,代表的是將此字符串分割成n部分(這里的n就是limit).

返回值:

此方法返回的數(shù)組包含此字符串的每個子字符串,這些子字符串以匹配到的正則表達式(就是以輸入的第一個參數(shù)regex)作為結(jié)束,或由字符串的結(jié)尾作為結(jié)束。

注意事項:

  1. 數(shù)組中的子字符串按照它們在這個字符串中出現(xiàn)的順序排列。
  2. 如果輸入的regex不匹配字符串里面的任何字符,那么結(jié)果數(shù)組只有一個元素,即這個字符串。(就是若字符串里面沒有出現(xiàn)輸入的regex參數(shù))
  3. 如果在字符串的開頭有一個正數(shù)的匹配(就是字符串開頭有>0個的regex分隔符),那么在結(jié)果數(shù)組的開頭會包含一個空的前導(dǎo)子字符串.
public class test {
    public static void main(String[] args) {
        String str = ",,1,2,3,4"; // 注意這里字符串開頭就匹配到了逗號
        String[] s = str.split(",",10);// 這里先取10,后文介紹第二個參數(shù)
        for (String string : s) {
            System.out.println("子字符串"+string);
        }
        System.out.println(s.length);
    }

}

運行結(jié)果:

第一個逗號前面會有出現(xiàn)一個空的子字符串

limit參數(shù)控制應(yīng)用模式的次數(shù),因此會影響結(jié)果數(shù)組的長度。(這里的意思就是limit的取值控制了結(jié)果數(shù)組的長度)

對以上解讀如下: (1) 如果limit輸入的是一個正數(shù), 那么該模式將最多應(yīng)用limit - 1次(就是說只會用輸入的regex去字符串里面匹配limit-1次),數(shù)組的長度將不大于limit,并且數(shù)組的最后一個條目將包含最后一個匹配的分隔符之外的所有輸入(就是說他分隔的模式是從前逐個往后的).給個代碼便于大家理解:

public class test {
    public static void main(String[] args) {
        String str = "1,2,3,4";
        String[] s = str.split(",",2);//這里輸入limit為2,即分成2部分
        for (String string : s) {
            System.out.println("子字符串"+string);
        }
        System.out.println(s.length);
    }

}

運行結(jié)果:

字符串被分隔成2個子字符串,分隔模式是從前往后的

(2) 如果輸入的limit為,則模式將被應(yīng)用盡可能多的次數(shù),結(jié)果數(shù)組可以有任何長度,而尾部的空字符串將被丟棄. (就是匹配字符串里面所有的regex分隔符),關(guān)于空字符串被丟棄,代碼如下:

public class test {
    public static void main(String[] args) {
        String str = "1,2,3,4,,,";// 這里后面逗號之間的空字符串將被丟棄
        String[] s = str.split(",",0);
        for (String string : s) {
            System.out.println("子字符串"+string);
        }
        System.out.println(s.length);
    }

}

運行結(jié)果:

尾部的空字符串將不會出現(xiàn)在結(jié)果數(shù)組里

(3) 如果輸入limit的值為負數(shù),則模式將被應(yīng)用盡可能多的次數(shù),數(shù)組可以有任何長度。(尾部的空字符串也不會被丟失噢)

public class test {
    public static void main(String[] args) {
        String str = ",1,2,3,4,";
        String[] s = str.split(",",-1);//limit值為負數(shù)
        for (String string : s) {
            System.out.println("子字符串"+string);
        }
        System.out.println(s.length);
    }

}

運行結(jié)果:

字符串的尾部空字符串不會被丟失

二、split(regex)

接下來只帶有一個參數(shù)的split方法就容易了,就是默認limit的值為0.

該方法的工作原理就是用給定regex參數(shù)和一個limit參數(shù)默認為0來調(diào)用兩個參數(shù)的split方法。因此,結(jié)果數(shù)組中不包含尾隨的空字符串。

總結(jié)

到此這篇關(guān)于Java中String.split()的最詳細源碼解讀及注意事項的文章就介紹到這了,更多相關(guān)java String.split()源碼解讀內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

富源县| 平顺县| 司法| 瑞丽市| 师宗县| 东安县| 涞源县| 静海县| 凉山| 闵行区| 涞水县| 手游| 杭锦后旗| 榆社县| 南开区| 泸溪县| 宁武县| 西青区| 社旗县| 崇礼县| 年辖:市辖区| 梨树县| 府谷县| 通城县| 桐庐县| 北川| 五莲县| 河北省| 灌阳县| 乌拉特中旗| 河东区| 齐河县| 九龙坡区| 乐陵市| 祥云县| 左云县| 监利县| 雅江县| 阜平县| 芜湖县| 腾冲县|