Java?split方法使用超詳細講解
1. 問題描述
描述:在日常編寫代碼時,我們經(jīng)常遇到需要將一串字符串中的數(shù)據(jù)進行分析摘取,從中獲得分隔符外的數(shù)據(jù),此時便不得不提split方法。
2. 方法介紹
分隔符可以是任意字符、符號、數(shù)字、字符串等。
2.1 split(String regex)
2.1.1 單個分隔符
public class Test { public static void main(String[] args) { String str="2018,text,今天"; //單個分隔符用引號括起來即可 String[] data = str.split(","); for(int i=0;i< data.length;i++){ System.out.println(data[i]); } } }
上述代碼輸出結(jié)果
如果分隔符本身就是"|",那么就需要使用轉(zhuǎn)義字符"\"讓其產(chǎn)生效果,否則結(jié)果相反。
public class Test { public static void main(String[] args) { String str="a|bc|8"; //java中\(zhòng)\表示一個普通\,\+特殊字符表示字符本身 String[] data = str.split("\\|"); for(int i=0;i< data.length;i++){ System.out.println(data[i]); } } }
反之如果直接使用則會有相反效果, 輸出字符串中的單個字符。如下所示:
public class Test { public static void main(String[] args) { String str="a|bc|8"; //java中\(zhòng)\表示一個普通\,\+特殊字符表示字符本身 String[] data = str.split("|"); for(int i=0;i< data.length;i++){ System.out.println(data[i]); } } }
2.1.2 多個分隔符
public class Test { public static void main(String[] args) { String str="2021年11月18日;英語,數(shù)學,語文;"; //多個分隔符用引號括起來,并且用“|”進行分割 String[] data = str.split(",|;"); for(int i=0;i< data.length;i++){ System.out.println(data[i]); } } }
2.1.3 正則表達式表示分隔符
在正則表達式中"\d+"表示一個或多個數(shù)字,是用于從一堆數(shù)字字母以及其它字符組成的字符串中獲取非數(shù)字字符或字符串。
public class Test { public static void main(String[] args) { String str="2018年11月18日abcd85gg688"; //正則表達式中\(zhòng)d+表示一個或多個數(shù)字,java中\(zhòng)\表示一個普通\ String[] data = str.split("\\d+"); for(int i=0;i< data.length;i++){ System.out.println(data[i]); } } }
上述代碼輸出結(jié)果
2.1.4 特殊情況
- 字符串開頭有分隔符:開頭產(chǎn)生一個空字符串,其余正常。
- 分隔符相互緊挨著:每兩個分隔符產(chǎn)生一個空字符串,若有三個分隔符則會有2各空字符,以此類推。
- 字符串最尾部有分割符:末尾產(chǎn)生一個空字符串,其余正常。
2.2 split(String regex, int limit)
- 如果 limit > 0,(從左到右)最多分割 n - 1 次,數(shù)組的長度將不會大于 n,結(jié)尾的空字符串不會丟棄。
- 如果 limit < 0,匹配到多少次就分割多少次,而且數(shù)組可以是任何長度。結(jié)尾的空字符串不會丟棄。
- 如果 limit = 0,匹配到多少次就分割多少次,數(shù)組可以是任何長度,并且結(jié)尾空字符串將被丟棄。
也就是說,使用split方法時,如果只填一個正則表達式,結(jié)尾空字符串將被丟棄
補充:你沒想到的Java中split函數(shù)的用法
split:字符串切分,返回String數(shù)組
語法:
public String[] split(String regex, int limit) // regex:正則表達式分割符 // limit:分割的份數(shù)(等于切分次數(shù)+1),這個參數(shù)可以不給
代碼示例:
String str = "Welcome-to-Runoob"; for(String retval: str.split("-")){ System.out.println(retval); }
執(zhí)行結(jié)果:
Welcome
to
Runoob
如果將第二行中的某部分改寫為
Str.split("-",2)
則結(jié)果變?yōu)椋?/p>
Welcome
to-Runoob
由于在正則表達式語法中有很多特殊字符,比如.
、*
、?
、+
,所以有時會用到轉(zhuǎn)義字符,比如
str = new String("www.runoob.com"); for(String retval: str.split("\\.",3)){ System.out.println(retval); }
結(jié)果
www
runoob
com
如果想要使用多種分割符對字符串分割,可以利用正則表達式的語法|
[ ]
String str = new String("1+22*333-4444/5555%666666=?"); for(String retval: str.split("[+*-/%]")){ System.out.println(retval); } for(String retval: str.split("[0-9.]+")){ System.out.println(retval); } for(String retval: str.split("(\\+)|(-)|(\\*)|(/)|(%)")){ System.out.println(retval); } for(String retval: str.split("[^0-9.]")){ System.out.println(retval); }
結(jié)果:
1
22
333
4444
5555
666666=?
?
+
*
-
/
%
=?
1
22
333
4444
5555
666666=?
1
22
333
4444
5555
666666
總結(jié)
到此這篇關(guān)于Java split方法使用的文章就介紹到這了,更多相關(guān)Java split方法使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
注冊中心配置了spring?security后客戶端啟動報錯
這篇文章主要為大家介紹了注冊中心配置了spring?security后客戶端啟動報錯問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07Java反射學習 getClass()函數(shù)應(yīng)用
所謂反射,可以理解為在運行時期獲取對象類型信息的操作,本文將詳細介紹,需要的朋友可以參考下2012-12-12java中的equals()和toString()方法實例詳解
這篇文章主要介紹了java中的equals()和toString()方法實例詳解的相關(guān)資料,這里舉例說明,并附實例代碼,和實現(xiàn)效果圖,需要的朋友可以參考下2016-11-11spring注入在有常量的情況下使用@AllArgsConstructor操作
這篇文章主要介紹了spring注入在有常量的情況下使用@AllArgsConstructor操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09詳解WebSocket+spring示例demo(已使用sockJs庫)
本篇文章主要介紹了WebSocket spring示例demo(已使用sockJs庫),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01