JAVA中split函數(shù)的常見(jiàn)用法實(shí)例
只寫(xiě)經(jīng)常使用的,并不完整。
1.基本用法,將字符串按照指定字符串進(jìn)行分割,例如:
public class Main {
public static void main(String[] args) {
String ss = "abcabcdefg";
String[] split = ss.split("bc");
for(String st:split){
System.out.println(st);
}
System.out.println("分隔后字符串?dāng)?shù)組長(zhǎng)度為");
System.out.println(split.length);
}
}
輸出:
a
a
defg
分隔后字符串?dāng)?shù)組長(zhǎng)度為
3
2.需要使用多個(gè)字符進(jìn)行分割:使用split("[]"),其中[]里面存放需要分割的字符,注意,現(xiàn)在是按照字符來(lái)分割,例如:
public class Main {
public static void main(String[] args) {
String ss = "abcabcdefg";
String[] split = ss.split("[bc]");
for(String st:split){
System.out.println(st);
}
System.out.println("分隔后字符串?dāng)?shù)組長(zhǎng)度為");
System.out.println(split.length);
}
}
輸出:
a
a
defg
分隔后字符串?dāng)?shù)組長(zhǎng)度為
5
原因是將b和c都當(dāng)作分割的字符。
用法其實(shí)上面兩條差不多就可以了,重要的是一些特殊情況:
情況1:字符串中有連續(xù)的分割符,例如2中,b也是分割符c也是分隔符,那么在分割bc時(shí)會(huì)產(chǎn)生一個(gè)空字符(""),n個(gè)連續(xù)的分割符會(huì)產(chǎn)生n-1個(gè)空字符。下面是調(diào)試時(shí)的信息:

可以看到中間產(chǎn)生了空字符。
情況2:分割符出現(xiàn)在首部,那么出現(xiàn)幾個(gè)分割符,就有多少個(gè)空字符。例如
public class Main {
public static void main(String[] args) {
String ss = "aaabcabcdefg";
String[] split = ss.split("[a]");
for(String st:split){
System.out.println(st);
}
System.out.println("分隔后字符串?dāng)?shù)組長(zhǎng)度為");
System.out.println(split.length);
}
}輸出:
bc
bcdefg
分隔后字符串?dāng)?shù)組長(zhǎng)度為
5
前面3個(gè)a都是空字符。
情況3:有些正則表達(dá)式,這是一種特殊情況,如,*等符號(hào)需要添加轉(zhuǎn)義字符\。
解決方法:
針對(duì)出現(xiàn)空字符,可以寫(xiě)一個(gè)遍歷,長(zhǎng)度為0的過(guò)濾掉。
for(String st:split){
if(st.length()>0){
list.add(st);
}
}
針對(duì)轉(zhuǎn)義字符,編譯器會(huì)報(bào)錯(cuò),就試試添加\。
補(bǔ)充:Java中Split函數(shù)的用法技巧
在java.lang包中也有String.split()方法,與.net的類(lèi)似,都是返回是一個(gè)字符型數(shù)組,但使用過(guò)程中還有一些小技巧。
如執(zhí)行:"2|33|4".split("|")
出來(lái)的結(jié)果是:
""
2
|
3
3
|
4
奇怪吧,不過(guò)注意看一下API說(shuō)明還是知道原因的.
java.lang.string.split
split 方法
將一個(gè)字符串分割為子字符串,然后將結(jié)果作為字符串?dāng)?shù)組返回。
stringObj.split([separator,[limit]])
參數(shù)
- stringObj
必選項(xiàng)。要被分解的 String 對(duì)象或文字。該對(duì)象不會(huì)被 split 方法修改。 - separator
可選項(xiàng)。字符串或 正則表達(dá)式對(duì)象,它標(biāo)識(shí)了分隔字符串時(shí)使用的是一個(gè)還是多個(gè)字符。如果忽略該選項(xiàng),返回包含整個(gè)字符串的單一元素?cái)?shù)組。 - limit
可選項(xiàng)。該值用來(lái)限制返回?cái)?shù)組中的元素個(gè)數(shù)。
說(shuō)明
split 方法的結(jié)果是一個(gè)字符串?dāng)?shù)組,在 stingObj 中每個(gè)出現(xiàn) separator 的位置都要進(jìn)行分解
所以正常的寫(xiě)法是這樣的:
1、如果用“.”作為分隔的話,必須是如下寫(xiě)法:String.split("\\."),這樣才能正確的分隔開(kāi),不能用String.split(".");
2、如果用“|”作為分隔的話,必須是如下寫(xiě)法:String.split("\\|"),這樣才能正確的分隔開(kāi),不能用String.split("|");
“.”和“|”都是轉(zhuǎn)義字符,必須得加"\\";
3、如果在一個(gè)字符串中有多個(gè)分隔符,可以用“|”作為連字符,比如:“a=1 andb =2 or c=3”,把三個(gè)都分隔出來(lái),可以用String.split("and|or");
總結(jié)
到此這篇關(guān)于JAVA中split函數(shù)的常見(jiàn)用法的文章就介紹到這了,更多相關(guān)Java split函數(shù)用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java spring整合junit操作(有詳細(xì)的分析過(guò)程)
這篇文章主要介紹了java spring整合junit操作(有詳細(xì)的分析過(guò)程),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
java通過(guò)證書(shū)訪問(wèn)etcd的實(shí)現(xiàn)步驟
Etcd提供了多種語(yǔ)言的客戶(hù)端庫(kù),本文主要介紹了java通過(guò)證書(shū)訪問(wèn)etcd的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-05-05
springboot過(guò)濾器和攔截器的實(shí)例代碼
這篇文章主要介紹了springboot過(guò)濾器和攔截器的實(shí)例代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07
Spring?Boot?使用?SSE?方式向前端推送數(shù)據(jù)詳解
這篇文章主要介紹了Spring?Boot?使用SSE方式向前端推送數(shù)據(jù)詳解,SSE簡(jiǎn)單的來(lái)說(shuō)就是服務(wù)器主動(dòng)向前端推送數(shù)據(jù)的一種技術(shù),它是單向的,也就是說(shuō)前端是不能向服務(wù)器發(fā)送數(shù)據(jù)的2022-08-08
Spring事務(wù)aftercommit原理及實(shí)踐
這篇文章主要為大家介紹了Spring事務(wù)aftercommit原理及實(shí)踐,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
如何在SpringBoot中添加攔截器忽略請(qǐng)求URL當(dāng)中的指定字符串
這篇文章主要介紹了在SpringBoot中添加攔截器忽略請(qǐng)求URL當(dāng)中的指定字符串,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08

