Java?split方法使用超詳細(xì)講解
1. 問題描述
描述:在日常編寫代碼時(shí),我們經(jīng)常遇到需要將一串字符串中的數(shù)據(jù)進(jìn)行分析摘取,從中獲得分隔符外的數(shù)據(jù),此時(shí)便不得不提split方法。
2. 方法介紹
分隔符可以是任意字符、符號(hào)、數(shù)字、字符串等。
2.1 split(String regex)
2.1.1 單個(gè)分隔符
public class Test {
public static void main(String[] args) {
String str="2018,text,今天";
//單個(gè)分隔符用引號(hào)括起來即可
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)\表示一個(gè)普通\,\+特殊字符表示字符本身
String[] data = str.split("\\|");
for(int i=0;i< data.length;i++){
System.out.println(data[i]);
}
}
}
反之如果直接使用則會(huì)有相反效果, 輸出字符串中的單個(gè)字符。如下所示:
public class Test {
public static void main(String[] args) {
String str="a|bc|8";
//java中\(zhòng)\表示一個(gè)普通\,\+特殊字符表示字符本身
String[] data = str.split("|");
for(int i=0;i< data.length;i++){
System.out.println(data[i]);
}
}
}
2.1.2 多個(gè)分隔符
public class Test {
public static void main(String[] args) {
String str="2021年11月18日;英語,數(shù)學(xué),語文;";
//多個(gè)分隔符用引號(hào)括起來,并且用“|”進(jìn)行分割
String[] data = str.split(",|;");
for(int i=0;i< data.length;i++){
System.out.println(data[i]);
}
}
}
2.1.3 正則表達(dá)式表示分隔符
在正則表達(dá)式中"\d+"表示一個(gè)或多個(gè)數(shù)字,是用于從一堆數(shù)字字母以及其它字符組成的字符串中獲取非數(shù)字字符或字符串。
public class Test {
public static void main(String[] args) {
String str="2018年11月18日abcd85gg688";
//正則表達(dá)式中\(zhòng)d+表示一個(gè)或多個(gè)數(shù)字,java中\(zhòng)\表示一個(gè)普通\
String[] data = str.split("\\d+");
for(int i=0;i< data.length;i++){
System.out.println(data[i]);
}
}
}上述代碼輸出結(jié)果

2.1.4 特殊情況
- 字符串開頭有分隔符:開頭產(chǎn)生一個(gè)空字符串,其余正常。
- 分隔符相互緊挨著:每?jī)蓚€(gè)分隔符產(chǎn)生一個(gè)空字符串,若有三個(gè)分隔符則會(huì)有2各空字符,以此類推。
- 字符串最尾部有分割符:末尾產(chǎn)生一個(gè)空字符串,其余正常。
2.2 split(String regex, int limit)
- 如果 limit > 0,(從左到右)最多分割 n - 1 次,數(shù)組的長(zhǎng)度將不會(huì)大于 n,結(jié)尾的空字符串不會(huì)丟棄。
- 如果 limit < 0,匹配到多少次就分割多少次,而且數(shù)組可以是任何長(zhǎng)度。結(jié)尾的空字符串不會(huì)丟棄。
- 如果 limit = 0,匹配到多少次就分割多少次,數(shù)組可以是任何長(zhǎng)度,并且結(jié)尾空字符串將被丟棄。
也就是說,使用split方法時(shí),如果只填一個(gè)正則表達(dá)式,結(jié)尾空字符串將被丟棄
補(bǔ)充:你沒想到的Java中split函數(shù)的用法
split:字符串切分,返回String數(shù)組
語法:
public String[] split(String regex, int limit)
// regex:正則表達(dá)式分割符
// limit:分割的份數(shù)(等于切分次數(shù)+1),這個(gè)參數(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
由于在正則表達(dá)式語法中有很多特殊字符,比如.、*、?、+,所以有時(shí)會(huì)用到轉(zhuǎn)義字符,比如
str = new String("www.runoob.com");
for(String retval: str.split("\\.",3)){
System.out.println(retval);
}結(jié)果
www
runoob
com
如果想要使用多種分割符對(duì)字符串分割,可以利用正則表達(dá)式的語法| [ ]
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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java JDBC批量執(zhí)行executeBatch方法詳解
這篇文章主要介紹了Java JDBC批量執(zhí)行executeBatch方法詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
spring定時(shí)任務(wù)執(zhí)行兩次及tomcat部署緩慢問題的解決方法
這篇文章主要給大家介紹了關(guān)于spring定時(shí)任務(wù)執(zhí)行兩次及tomcat部署緩慢問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01
SpringBoot越權(quán)和數(shù)據(jù)權(quán)限控制的實(shí)現(xiàn)方案(最新整理)
文章介紹通過自定義注解@PermissionCheck、切面編程和用戶權(quán)限服務(wù)實(shí)現(xiàn)Java權(quán)限控制,限制只讀用戶操作,優(yōu)化數(shù)據(jù)庫查詢并統(tǒng)一異常處理,確保系統(tǒng)安全與擴(kuò)展性,本文給大家介紹SpringBoot越權(quán)和數(shù)據(jù)權(quán)限控制的實(shí)現(xiàn)方案,感興趣的朋友跟隨小編一起看看吧2025-06-06
SpringBoot JdbcTemplate批量操作的示例代碼
本篇文章主要介紹了SpringBoot JdbcTemplate批量操作的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04

