91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中字符串split() 的使用方法,沒你想的那么簡單

發布時間:2020-10-21 04:53:25 來源:網絡 閱讀:1751 作者:沙漏半杯 欄目:編程語言

先看下面的方法,事先預測一下,經過split方法,按逗號進行分割為數組之后,生成的數組的長度是多少,目測很多人都覺得是8,但是結果卻出乎意料。是5而不是8.


? ? private static void testSplit() {

? ? ? ? String ss = ",aa,bb,cc,dd,,,";

? ? ? ? String[] array = ss.split(",");

?

? ? ? ? System.out.println(array.length);//結果是5,而不是預想中的8

? ? ? ? for (int i = 0; i < array.length; i++) {

? ? ? ? ? ? System.out.println(array[i]);

? ? ? ? }

? ? }

然后就是正兒八經的運行結果圖:

Java中字符串split() 的使用方法,沒你想的那么簡單



可以看到,結果真的是5而不是我們猜的8,這是為什么呢?


原因解析:


點進去看源碼,debug一下,如下圖:

Java中字符串split() 的使用方法,沒你想的那么簡單



可以看到,剛剛開始的時候,確實是有0-7,8個分割出來的東西存在,有三個是空字符串,""。不是null。不用擔心空指針異常。


然后 看到下面的繼續走,if語句,就看到,他把這個list從尾部開始判斷,如果這個list的后面的字符串的長度是0,那么這個resultSize就 減減,然后一直while循環,


直到不符合條件,那么list的下標是5、6、7的值就被拋棄了,然后新生的結果字符串數組,的大小就變成加工過后的長度,那么就變成了長度 5的數組。


list.subList(0, resultSize).toArray(result)


就是這句話啦。


他只是處理后面尾部的空字符串,不處理中間的空字符串和 開頭的空字符串。


知道這個原理之后,那么這個 問題以后怎么變,你都了然于胸啦。


?


下面是又更新的


現在要求字符串


"aa12sas32sasa223sas12as12wqe"http://去掉數字,然后弄成數組

"aa,,sas,,sasa,,,,sasas,,,"http://去掉逗號,不管幾個逗號,都去掉

"aa? sas sa sa? ? ?sas? as? "http://去掉空格,也不管幾個,

把他們給分解成數組,同時刨除掉不用的多余信息。


具體實現代碼如下:


? ? private static void testSplitPlus() {

? ? ? ? String ss = "aa12sas32sasa223sas12as12wqe";

? ? ? ? String[] array = ss.split("[\\d]+");

? ? ? ? System.out.println(Arrays.toString(array));

? ? ? ? ss = "aa,,sas,,sasa,,,,sasas,,,";

? ? ? ? array = ss.split("[,]+");

? ? ? ? System.out.println(Arrays.toString(array));

? ? ? ? ss = "aa? sas sa sa? ? ?sas? as? ";

? ? ? ? array = ss.split("[\\s]+");

? ? ? ? System.out.println(Arrays.toString(array));

? ? }

下面再看看這個split的源碼。


? ? public String[] split(String regex) {

? ? ? ? return split(regex, 0);

? ? }

不知道你看到沒,那個regex,不就是正則表達式的意思嘛?


那就明白了,這個方法是支持正則表達式操作的。那上面的代碼就好解釋啦。


第一個[\\d]+這個解釋就是\\是轉義符,d表示數字,括起來后面的加號表示一個或者多個,那么就可以解釋運行結果啦。


第二個[,]解釋類似,就是逗號出現一次或多次,


第三個,\\s,就是匹配任何空白字符,包括空格、制表符、換頁符等等。等價于 [ \f\n\r\t\v]。


然后下面,看運行結果。

Java中字符串split() 的使用方法,沒你想的那么簡單


這就是我們要的結果啦。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

靖江市| 荥阳市| 定安县| 政和县| 常德市| 玉环县| 临洮县| 五指山市| 宽城| 弥渡县| 大连市| 澄城县| 平远县| 松原市| 泰和县| 安乡县| 普宁市| 合阳县| 隆林| 沧州市| 乾安县| 固安县| 江阴市| 涡阳县| 天长市| 牙克石市| 盐亭县| 麻城市| 武平县| 合作市| 龙川县| 锡林郭勒盟| 高雄县| 辰溪县| 东乌| 合山市| 缙云县| 麟游县| 寿光市| 邯郸县| 新津县|