欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java split 分隔空值無法得到的解決方式

 更新時間:2020年10月20日 09:10:02   作者:BoomLee  
這篇文章主要介紹了Java split 分隔空值無法得到的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

應用場景

String s1="A,B,"

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

[A,B]

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

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

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

[A, B, ]

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

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

split一共有兩個方法,

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

②. public String[] split(String regex )

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

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

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

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

數(shù)組中的子字符串按它們在此字符串中的順序排列。如果表達式不匹配輸入的任何部分,則結(jié)果數(shù)組只具有一個元素,即此字符串。

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

如果 n 為非正,則模式將被應用盡可能多的次數(shù),而且數(shù)組可以是任意長度。如果 n 為零,則模式將被應用盡可能多的次數(shù),數(shù)組可有任何長度,并且結(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)生與以下表達式完全相同的結(jié)果:

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

參數(shù):

regex - 定界正則表達式

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

返回:

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

拋出:

PatternSyntaxException - 如果正則表達式的語法無效

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

1.當參數(shù)為整數(shù)的時候,只需要截取前幾個,需要幾個截取幾個,這個不用多說。

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

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

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

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

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

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

輸出結(jié)果為4

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

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

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

輸出結(jié)果為8

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

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

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

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

public String[] split(String regex)

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

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

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

Regex 結(jié)果

: { "boo", "and", "foo" }

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

參數(shù):

regex - 定界正則表達式

返回:

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

拋出:

PatternSyntaxException - 如果正則表達式的語法無效

以上這篇Java split 分隔空值無法得到的解決方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 關(guān)于SpringMVC請求域?qū)ο蟮臄?shù)據(jù)共享問題

    關(guān)于SpringMVC請求域?qū)ο蟮臄?shù)據(jù)共享問題

    這篇文章主要介紹了SpringMVC請求域?qū)ο蟮臄?shù)據(jù)共享問題,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • 細說Springcloud eureka的幾種主動下線服務的方式

    細說Springcloud eureka的幾種主動下線服務的方式

    這篇文章主要介紹了細說Springcloud eureka的幾種主動下線服務的方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • java從字符串中提取數(shù)字的簡單實例

    java從字符串中提取數(shù)字的簡單實例

    下面小編就為大家?guī)硪黄猨ava從字符串中提取數(shù)字的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • JAVA實現(xiàn)KMP算法理論和示例代碼

    JAVA實現(xiàn)KMP算法理論和示例代碼

    本文從理論到代碼講解了JAVA對KMP算法的實現(xiàn),大家可以參考一下
    2013-11-11
  • Java使用poi-tl1.9.1生成Word文檔的技巧分享

    Java使用poi-tl1.9.1生成Word文檔的技巧分享

    本文將簡單介紹poi-tl的相關(guān)知識,通過一個實際的案例實踐,充分介紹如何利用poi-tl進行目標文檔的生成,同時分享幾個不同的office版本如何進行圖表生成的解決方案,需要的朋友可以參考下
    2023-09-09
  • java圖片格式轉(zhuǎn)換的三段代碼

    java圖片格式轉(zhuǎn)換的三段代碼

    這篇文章主要分享了java圖片格式轉(zhuǎn)換的三段代碼,小編查找資料整理了java圖片格式轉(zhuǎn)換的三段不同代碼,推薦給大家。
    2015-11-11
  • springBoot controller,service,dao,mapper,model層的作用說明

    springBoot controller,service,dao,mapper,model層的作用說明

    這篇文章主要介紹了springBoot controller,service,dao,mapper,model層的作用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • MyBatis工廠類封裝與簡化實現(xiàn)

    MyBatis工廠類封裝與簡化實現(xiàn)

    工廠類的目的是將對象的創(chuàng)建邏輯封裝在一個類中,以便客戶端代碼無需了解具體的實現(xiàn)細節(jié),本文主要介紹了MyBatis工廠類封裝與簡化實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • springIOC的使用流程及spring中使用類型轉(zhuǎn)換器的方式

    springIOC的使用流程及spring中使用類型轉(zhuǎn)換器的方式

    Spring IOC是Spring框架的核心原理之一,它是一種軟件設計模式,用于管理應用程序中的對象依賴關(guān)系,這篇文章主要介紹了springIOC的使用流程以及spring中如何使用類型轉(zhuǎn)換器,需要的朋友可以參考下
    2023-06-06
  • Spring boot 在idea中添加熱部署插件的圖文教程

    Spring boot 在idea中添加熱部署插件的圖文教程

    這篇文章主要介紹了Spring boot 在idea中添加熱部署插件的圖文教程,本文通過圖文并茂的形式給大家展示具體步驟,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10

最新評論