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

淺談String.split()遇到空字符串的幾種情況

 更新時(shí)間:2020年10月20日 08:38:48   作者:杜.  
這篇文章主要介紹了淺談String.split()遇到空字符串的幾種情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

Java中的我們可以利用split把字符串按照指定的分割符進(jìn)行分割,然后返回字符串?dāng)?shù)組

split 方法

該方法的作用是:將一個(gè)字符串分割為子字符串,然后將結(jié)果作為字符串?dāng)?shù)組返回。

stringObj.split([separator,[limit]])

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

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

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

會(huì)遇到以下幾種情況:

1.空字符串不被解析

public class test {
 public static void main(String[] args) {
 String str = "1,2,3,4,,,";
 String[] arr = str.split(",");
 for (String string : arr) {
 System.out.println("str"+string);
 }
 System.out.println(arr.length);
 }
}

結(jié)果1:

2.最后一個(gè)分隔符被分的字符串不為空時(shí),其余空字符串可被解析。

public class test {
 public static void main(String[] args) {
 String str = "1,2,3,4,,,5";
 String[] arr = str.split(",");
 for (String string : arr) {
 System.out.println("str"+string);
 }
 System.out.println(arr.length);
 }
}

結(jié)果2:

但是在實(shí)際開發(fā)的時(shí)候不能保證最后一個(gè)分隔符被分的字符串為不空,所以在用split()這個(gè)方法后再取被分隔的字符串?dāng)?shù)組的時(shí)候有時(shí)候就出現(xiàn)數(shù)據(jù)越界的問題(最后一個(gè)分隔符被分的字符串為空)

想到了一個(gè)方法是split([separator,[limit]]) ,后面把limit賦值成比該字符串被分隔成字符數(shù)組后數(shù)組的長度大很多的值,這能保證所有為空的都能被解析,這正應(yīng)了api里的解釋:

3.如果該限制 n 大于 0,則模式將被最多應(yīng)用 n - 1 次(此時(shí)n為1000)

public class test {
 public static void main(String[] args) {
 String str = "1,2,3,4,,,";
 String[] s = str.split(",",1000);
 for (String string : s) {
 System.out.println("str"+string);
 }
 System.out.println(s.length);
 }
}

結(jié)果3:

4.如果把limit設(shè)置為非正,也能全部解析如:

public class test {
 public static void main(String[] args) {
 String str = "1,2,3,4,,,";
 String[] s = str.split(",",-1);
 for (String string : s) {
 System.out.println("str"+string);
 }
 System.out.println(s.length);
 }
}

結(jié)果4:

當(dāng)String str = "1,2,3,4,,,5";時(shí)分別與上述結(jié)果3,4一致。

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

Java代碼

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í)不是最多的)。

Java代碼

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

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

輸出結(jié)果為 4

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

Java代碼

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

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

輸出結(jié)果為 8

注意:

1、如果用“.”作為分隔的話,必須是如下寫法,String.split("\\."),這樣才能正確的分隔開,不能用String.split(".");

2、如果用“|”作為分隔的話,必須是如下寫法,String.split("\\|"),這樣才能正確的分隔開,不能用String.split("|");

以上這篇淺談String.split()遇到空字符串的幾種情況就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • IDEA2020導(dǎo)入非maven項(xiàng)目并部署tomcat的方法

    IDEA2020導(dǎo)入非maven項(xiàng)目并部署tomcat的方法

    這篇文章主要介紹了IDEA 2020 導(dǎo)入非maven項(xiàng)目并部署tomcat的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Spring Cloud Gateway實(shí)現(xiàn)灰度發(fā)布方案

    Spring Cloud Gateway實(shí)現(xiàn)灰度發(fā)布方案

    灰度發(fā)布是在微服務(wù)中的表現(xiàn)為同一服務(wù)同時(shí)上線不同版本,讓一部分用戶使用新版本來驗(yàn)證新特性,如果驗(yàn)證沒有問題,則將所有用戶都遷移到新版本上,本文就來介紹一下如何實(shí)現(xiàn),感興趣的可以了解一下
    2023-12-12
  • Java由淺入深通關(guān)抽象類與接口下

    Java由淺入深通關(guān)抽象類與接口下

    在類中沒有包含足夠的信息來描繪一個(gè)具體的對(duì)象,這樣的類稱為抽象類,接口是Java中最重要的概念之一,它可以被理解為一種特殊的類,不同的是接口的成員沒有執(zhí)行體,是由全局常量和公共的抽象方法所組成,本文給大家介紹Java抽象類和接口,感興趣的朋友一起看看吧
    2022-04-04
  • Spark學(xué)習(xí)筆記之Spark SQL的具體使用

    Spark學(xué)習(xí)筆記之Spark SQL的具體使用

    這篇文章主要介紹了Spark學(xué)習(xí)筆記之Spark SQL的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 如何使用eclipse搭建maven多module項(xiàng)目(構(gòu)建父子項(xiàng)目)

    如何使用eclipse搭建maven多module項(xiàng)目(構(gòu)建父子項(xiàng)目)

    這篇文章主要介紹了如何使用eclipse搭建maven多module項(xiàng)目(構(gòu)建父子項(xiàng)目) ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • SpringBoot整合mybatis-plus進(jìn)階詳細(xì)教程

    SpringBoot整合mybatis-plus進(jìn)階詳細(xì)教程

    本文主要對(duì)mybatis-plus的條件構(gòu)造器、AR模式、插件、逆向工程、自定義全局操作、公共字段自動(dòng)填充等知識(shí)點(diǎn)進(jìn)行講解,需要的朋友參考下吧
    2021-09-09
  • SpringBoot中Filter沒有生效原因及解決方案

    SpringBoot中Filter沒有生效原因及解決方案

    Servlet 三大組件 Servlet、Filter、Listener 在傳統(tǒng)項(xiàng)目中需要在 web.xml 中進(jìn)行相應(yīng)的配置,這篇文章主要介紹了SpringBoot中Filter沒有生效原因及解決方案,需要的朋友可以參考下
    2024-04-04
  • Java Socket聊天室編程(一)之利用socket實(shí)現(xiàn)聊天之消息推送

    Java Socket聊天室編程(一)之利用socket實(shí)現(xiàn)聊天之消息推送

    這篇文章主要介紹了Java Socket聊天室編程(一)之利用socket實(shí)現(xiàn)聊天之消息推送的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • Spring Bean實(shí)例的創(chuàng)建及構(gòu)造器的挑選

    Spring Bean實(shí)例的創(chuàng)建及構(gòu)造器的挑選

    這篇文章主要介紹了Spring Bean實(shí)例的創(chuàng)建及構(gòu)造器的挑選,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-04-04
  • SpringSecurity?用戶帳號(hào)已被鎖定的問題及解決方法

    SpringSecurity?用戶帳號(hào)已被鎖定的問題及解決方法

    這篇文章主要介紹了SpringSecurity?用戶帳號(hào)已被鎖定,本文給大家分享問題原因及解決方式,需要的朋友可以參考下
    2023-12-12

最新評(píng)論