日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java 分割字符串的方法String.split()底层原理

發布時間:2025/3/21 java 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 分割字符串的方法String.split()底层原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1.舉例說明
    • 2.split源碼分析
    • 3.API原解
    • 4.regex參數API原解
    • 5.limit參數介紹
    • 6.結果的驗證
    • 7.此方法的使用

1.舉例說明

(例子來自于博主:https://blog.csdn.net/java_zhangshuai/article/details/80086857)

1.最普通的用法

String str1 = "aa,bb"; String[] split1 = str1.split(","); System.out.println(split1.length); //這個結果是2,都知道的

2.比較普通的用法

String str2 = ""; String[] split2 = str2.split(","); System.out.println(split2.length); //這個結果是1,但部分人會認為這個的結果是0, //這個為什么是1,我會在后面說

3.看起來比較奇怪的用法

String str3 = ","; String[] split3 = str3.split(","); System.out.println(split3.length); //這個結果是0,但部分人會認為結果是1,部分人會認為結果是2. //這個又為什么是0,我也會在后面說

2.split源碼分析

split方法準確的來說有兩個參數(String regex, int limit),只不過平時我們用的,是split的一個重載方法(String regex),默認是把第二個參數設置為0,源碼如下:

public String[] split(String regex) {return split(regex, 0); }public String[] split(String regex, int limit) {具體實現... }

3.API原解

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

上面這段話你可能會很蒙,看一下下面的例子你就明白了

注意:(空字符串也是一個字符串)

4.regex參數API原解

將此字符串拆分為給定正則表達式的匹配項。

5.limit參數介紹

api是這樣說的:
(1)limit參數控制應用模式的次數,因此影響結果數組的長度
(2)如果限制n大于零,則模式將最多應用n-1次,數組的長度將不大于n,數組的最后一項將包含最后一個匹配分隔符以外的所有輸入
(3)如果n為非正數,則模式將被應用盡可能多次,并且數組可以具有任何長度
(4)如果n為零,則將盡可能多次應用該模式,數組可以有任何長度,并且將丟棄尾隨的空字符串。

簡單的理解為:
limit 參數通過控制分割次數從而影響分割結果
如果傳入 limit (limit >0) 那么字符串最多被分割 limit -1 次,分割得到數組長度最大是 limit ,數組的最后一項將包含最后一個匹配分隔符以外的所有輸入(這句話的解釋看后面的例子,很重要)
如果 limit = -1 將會以最大分割次數分割
如果 limit = 0 將會以最大分割次數分割,但是分割結果會丟棄尾隨的所有空字符串

6.結果的驗證

(1)我們先介紹一下limit=0的時候

public class split {public static void main(String args[]) {String line = ",aa,bcd,eef,,ss,";String[] split = line.split(",",0);System.out.println(split.length);} }

dubug之后

結果證明,尾隨的空字符串被丟棄,那我們繼續證明到底是不是所有的尾隨字符串都被丟棄

上代碼:

public class split {public static void main(String args[]) {String line = ",aa,bcd,eef,,ss,,";String[] split = line.split(",",0);System.out.println(split.length);} }

dubug之后

果然,盡可能大的分割,最后的兩個空字符串都被丟棄了

(2)limit=4的時候

public class split {public static void main(String args[]) {String line = ",aa,bcd,eef,,ss,,";String[] split = line.split(",",4);System.out.println(split.length);} }

dubug之后

結果驗證了上面的那句話數組的最后一項將包含最后一個匹配分隔符以外的所有輸入
因為最多分割limit-1次,所以找到分割到第三次時的",",包含后面的所有輸入

(3)limit=-1的時候

public class split {public static void main(String args[]) {String line = ",aa,bcd,eef,,ss,,";String[] split = line.split(",",-1);System.out.println(split.length);} }

dubug之后

結果證明 limit = -1 將會以最大分割次數分割

7.此方法的使用

如果用“.”作為分隔的話,必須是如下寫法:String.split("\."),這樣才能正確的分隔開,不能用String.split(".");
2、如果用“|”作為分隔的話,必須是如下寫法:String.split("\|"),這樣才能正確的分隔開,不能用String.split("|");
“.”和“|”前面必須加\\才可以起到轉義的作用。
3、如果在一個字符串中有多個分隔符,可以用“|”作為連字符,比如:“a=1 and b =2 or c=3”,把三個都分隔出來,可以用String.split(“and|or”);

我們來看個例子:

String words[]=str.split("\\s+|\\.");

這個是很么意思呢?
使用一個或多個空格分隔和用逗號分隔

解釋如下:
s表示 空格,回車,換行等空白符
+號表示一個或多個的意思
|表示分隔符
使用的時候記得加上兩個斜杠哦

參考博客:https://blog.csdn.net/java_zhangshuai/article/details/80086857

總結

以上是生活随笔為你收集整理的Java 分割字符串的方法String.split()底层原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久精品美女 | 国产伦精品一区二区三区88av | mm131丰满少妇人体欣赏图 | 美女亚洲一区 | 成人小说亚洲一区二区三区 | 中文字幕人成乱码熟女香港 | 午夜国产一区二区 | 欧美性猛交xxx乱大交3蜜桃 | 久久视频一区二区 | 成人黄色在线免费观看 | 97影音| 色老大视频 | 朝桐光av一区二区三区 | 久久精品无码一区二区三区 | 动漫涩涩免费网站在线看 | www日本www | 日韩精品四区 | 中文在线8资源库 | 污网在线观看 | 亚洲一区电影网 | 秋霞电影一区二区 | 日本 在线 | 少妇太爽了太深了太硬了 | 国产精品一区二区三区免费观看 | 成人在线超碰 | 中国在线观看免费高清视频播放 | 97视频国产 | 性xxxx视频| 天堂网avav| 欧美毛片视频 | 精品三级av| 日在线视频 | 久久久久久片 | 韩国明星乱淫(高h)小说 | 天天色综合1 | 好吊一区二区三区 | 国产一级淫片a视频免费观看 | 交做爰xxxⅹ性爽 | 欧美综合亚洲 | 91成人免费在线观看视频 | 在线不欧美 | 毛片91| 97人妻一区二区精品免费视频 | 一级一片免费播放 | 色综合久久中文字幕无码 | 少妇又紧又色 | 欧美在线性爱视频 | 精品动漫一区二区三区在线观看 | 国产亚洲欧美在线精品 | 久久影视大全 | 羞羞漫画在线播放 | 国产视频亚洲 | 日韩a级大片| 国产一区二区三区在线免费观看 | 丰满大乳国产精品 | 欧美日韩一区二区综合 | 久久有精品 | 久久精品视 | 无码人妻精品一区二区三应用大全 | 亚洲最新在线 | 性高湖久久久久久久久免费 | xxx国产在线观看 | 99精品国产免费 | 日本色悠悠 | 嫩模啪啪 | 天堂久久久久 | 国产精品久久久久久久妇 | 少妇激情偷人爽爽91嫩草 | 国产精品成人99一区无码 | 日韩不卡在线播放 | 91精品国产91久久久久青草 | 欧美激情片一区二区 | 99色亚洲| 国产一区视频在线播放 | 啪啪激情网 | 久久久久久久久久久久久久av | 男人和女人日批 | 国产a级免费视频 | 岛国午夜视频 | 日韩欧美精品一区 | 日本成人免费 | 欧美性猛交xxxx乱大交3 | av在线精品| 横恋母在线观看 | 久草午夜 | 中文字幕免费一区 | 80日本xxxxxxxxx96| 精东传媒在线 | www.天天射 | 成人免费片 | 亚洲成人精品一区 | 日本欧美一区二区三区不卡视频 | 免费国产一级 | 婷婷色中文 | 国产三级短视频 | 91丝袜视频 | 国产黄色网址在线观看 | 欧美一区二区三区四区视频 | 国产欧美精品 |