av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java split 分隔空值無(wú)法得到的解決方式

瀏覽:13日期:2022-08-22 14:10:49

應(yīng)用場(chǎng)景

String s1='A,B,'

將s1 以逗號(hào)分隔,轉(zhuǎn)換成集合 正常的轉(zhuǎn)換結(jié)果如下

[A,B]

逗號(hào)后的空不再進(jìn)行分隔,若想逗號(hào)后的空即轉(zhuǎn)換為三個(gè)元素的集合

List<String> list = Arrays.asList(s1.split(',',-1));

只需要在跟個(gè)條件后,添加-1 即可 ,轉(zhuǎn)換的結(jié)果如下

[A, B, ]

補(bǔ)充知識(shí):Java Sting類(lèi)關(guān)于split處理空串以及截取最大數(shù)

java的String類(lèi)中有個(gè)split方法,這個(gè)是我們經(jīng)常使用到的。

split一共有兩個(gè)方法,

①.public String[] split(String regex,int limit)

②. public String[] split(String regex )

先說(shuō)第一個(gè),有兩個(gè)參數(shù),api上的例子:

public String[] split(String regex,int limit)

根據(jù)匹配給定的正則表達(dá)式來(lái)拆分此字符串。

此方法返回的數(shù)組包含此字符串的每個(gè)子字符串,這些子字符串由另一個(gè)匹配給定的表達(dá)式的子字符串終止或由字符串結(jié)束來(lái)終止。

數(shù)組中的子字符串按它們?cè)诖俗址械捻樞蚺帕小H绻磉_(dá)式不匹配輸入的任何部分,則結(jié)果數(shù)組只具有一個(gè)元素,即此字符串。

limit 參數(shù)控制模式應(yīng)用的次數(shù),因此影響結(jié)果數(shù)組的長(zhǎng)度。如果該限制 n 大于 0,則模式將被最多應(yīng)用 n - 1 次,數(shù)組的長(zhǎng)度將不會(huì)大于 n,而且數(shù)組的最后項(xiàng)將包含超出最后匹配的定界符的所有輸入。

如果 n 為非正,則模式將被應(yīng)用盡可能多的次數(shù),而且數(shù)組可以是任意長(zhǎng)度。如果 n 為零,則模式將被應(yīng)用盡可能多的次數(shù),數(shù)組可有任何長(zhǎng)度,并且結(jié)尾空字符串將被丟棄。

例如,字符串 'boo:and:foo' 使用這些參數(shù)可生成下列結(jié)果:

Regex Limit 結(jié)果

: 2 { 'boo', 'and:foo' }

: 5 { 'boo', 'and', 'foo' }

:-2 { 'boo', 'and', 'foo' }

o 5 { 'b', '', ':and:f', '', '' }

o -2 { 'b', '', ':and:f', '', '' }

o 0 { 'b', '', ':and:f' }

這種形式的方法調(diào)用 str.split(regex, n) 產(chǎn)生與以下表達(dá)式完全相同的結(jié)果:

Pattern.compile(regex).split(str, n)

參數(shù):

regex - 定界正則表達(dá)式

limit - 結(jié)果閾值,如上所述

返回:

字符串?dāng)?shù)組,根據(jù)給定正則表達(dá)式的匹配來(lái)拆分此字符串,從而生成此數(shù)組

拋出:

PatternSyntaxException - 如果正則表達(dá)式的語(yǔ)法無(wú)效

其實(shí)上面說(shuō)的已經(jīng)很詳細(xì)了,說(shuō)到底就是比常用的多了一個(gè)limit參數(shù)。但是參數(shù)怎么用。

1.當(dāng)參數(shù)為整數(shù)的時(shí)候,只需要截取前幾個(gè),需要幾個(gè)截取幾個(gè),這個(gè)不用多說(shuō)。

String line = 'aa,bb,cc,dd,,,,';

System.out.println(line.split(',',6).length);

輸出結(jié)果為6,limit參數(shù)指定幾個(gè),輸出幾個(gè),最多為8個(gè)

2.當(dāng)參數(shù)為零的時(shí)候,和split()一樣,截圖盡可能多的字符串(其實(shí)不是最多的)。

String line = 'aa,bb,cc,dd,,,,';

System.out.println(line.split(',',0).length);

輸出結(jié)果為4

3.當(dāng)參數(shù)為負(fù)的時(shí)候,即使后面有空的串,也會(huì)輸出到最大

String line = 'aa,bb,cc,dd,,,,';

System.out.println(line.split(',',-1).length);

輸出結(jié)果為8

可能大家都看出來(lái)了,以逗號(hào)切割的一般都是CSV格式的文件,當(dāng)遇到讀取每一行記錄的時(shí)候,不加參數(shù),就會(huì)遇到這種情況,讀取不完整,然后CSV數(shù)據(jù)格式驗(yàn)證的時(shí)候,驗(yàn)證數(shù)據(jù)不合法。

String line = 'aa,bb,cc,dd,,,,'; String mi[] = (line).split(sp); if (mi.length != 8)return;

實(shí)際結(jié)果 mi.length = 4,所以通不過(guò)驗(yàn)證直接非法數(shù)據(jù)

②其實(shí)就是當(dāng)limit參數(shù)為0的時(shí)候獲得的結(jié)果,將api的介紹放上來(lái),就不多說(shuō)了。

public String[] split(String regex)

根據(jù)給定的正則表達(dá)式的匹配來(lái)拆分此字符串。

該方法的作用就像是使用給定的表達(dá)式和限制參數(shù) 0 來(lái)調(diào)用兩參數(shù) split 方法。因此,結(jié)果數(shù)組中不包括結(jié)尾空字符串。

例如,字符串 'boo:and:foo' 產(chǎn)生帶有下面這些表達(dá)式的結(jié)果:

Regex 結(jié)果

: { 'boo', 'and', 'foo' }

o { 'b', '', ':and:f' }

參數(shù):

regex - 定界正則表達(dá)式

返回:

字符串?dāng)?shù)組,根據(jù)給定正則表達(dá)式的匹配來(lái)拆分此字符串,從而生成此數(shù)組。

拋出:

PatternSyntaxException - 如果正則表達(dá)式的語(yǔ)法無(wú)效

以上這篇Java split 分隔空值無(wú)法得到的解決方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 亚洲免费在线观看 | 日韩免费电影 | 亚洲资源站 | 欧美日韩大片 | 麻豆精品国产免费 | 日韩成人在线视频 | 国产午夜亚洲精品不卡 | 亚洲电影成人 | av网站免费观看 | 一区二区三区四区视频 | 免费日韩av网站 | 亚洲综合网站 | 狠狠视频 | 精品视频在线一区 | 狠狠爱综合 | 91精品国产综合久久久久 | 国产黄视频在线播放 | 一区二区三区四区在线视频 | 精品国产一区二区三区免费 | 欧美一区二区三区久久精品视 | 中国91av | 婷婷99| 国产欧美精品一区二区 | 久久久久久久国产精品 | 久久综合久久综合久久综合 | 国产综合在线视频 | av在线一区二区三区 | 日韩日韩日韩日韩日韩日韩日韩 | 免费激情av | 精品视频999 | 日本精品一区二区三区在线观看视频 | 成人精品一区二区三区中文字幕 | 国产精品色综合 | 日本粉嫩一区二区三区视频 | 中文字幕亚洲一区二区三区 | 青青草原精品99久久精品66 | 成av在线 | 在线精品观看 | 最近日韩中文字幕 | 国产精品一区在线观看你懂的 | 99热这里都是精品 |