国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java的split方法使用詳解

2019-11-26 15:07:04
字體:
來源:轉載
供稿:網(wǎng)友

相信大家都經(jīng)常使用String 的split方法,但是大家有沒有遇到下面的這種情況:

大家想想下面的代碼執(zhí)行結果是什么

public static void main(String[] args) {    // TODO Auto-generated method stub    String str1 = "a,b,c,,,a";    String str2 = "a,b,c,,,";    String str3 = "a,b,c, , ,";    String[] s1 = str1.split(",");    String[] s2 = str2.split(",");    String[] s3 = str3.split(",");     System.out.println("str1長度:"+s1.length);    System.out.println("str2長度:"+s2.length);    System.out.println("str3長度:"+s3.length);}

執(zhí)行結果:

為什么會出現(xiàn)這樣的結果呢,查找API發(fā)現(xiàn)了解決方法

解決方法:  

    通過查看API我們發(fā)現(xiàn)我們常用的split方法默認傳遞的是0,現(xiàn)在解決str2輸出空的解決方法是傳遞的第二個參數(shù)為負數(shù),即可

  public static void main(String[] args) {    // TODO Auto-generated method stub    String str1 = "a,b,c,,,a";    String str2 = "a,b,c,,,";    String str3 = "a,b,c, , ,";    String[] s1 = str1.split(",");    String[] s2 = str2.split(",",-1);    String[] s3 = str3.split(",",-1);        System.out.println("str1長度:"+s1.length);    System.out.println("str2長度:"+s2.length);    System.out.println("str3長度:"+s3.length);  }

經(jīng)查找API發(fā)現(xiàn)在String類中,存在兩個split重載方法

1.public String[] split(String regex)

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

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

例如,字符串 "boo:and:foo" 使用這些表達式可生成以下結果:

Regex 結果

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

參數(shù):
    regex - 定界正則表達式
返回:
字符串數(shù)組,它是根據(jù)給定正則表達式的匹配拆分此字符串確定的
拋出:
PatternSyntaxException - 如果正則表達式的語法無效

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

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

此方法返回的數(shù)組包含此字符串的子字符串,每個子字符串都由另一個匹配給定表達式的子字符串終止,或者由此字符串末尾終止。數(shù)組中的子字符串按它們在此字符串中出現(xiàn)的順序排列。如果表達式不匹配輸入的任何部分,那么所得數(shù)組只具有一個元素,即此字符串。

limit 參數(shù)控制模式應用的次數(shù),因此影響所得數(shù)組的長度。如果該限制 n 大于 0,則模式將被最多應用 n - 1 次,數(shù)組的長度將不會大于 n,而且數(shù)組的最后一項將包含所有超出最后匹配的定界符的輸入。如果 n 為非正,那么模式將被應用盡可能多的次數(shù),而且數(shù)組可以是任何長度。如果 n 為 0,那么模式將被應用盡可能多的次數(shù),數(shù)組可以是任何長度,并且結尾空字符串將被丟棄。

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

Regex Limit 結果

: 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" } 

 
調用此方法的 str.split(regex, n) 形式與以下表達式產(chǎn)生的結果完全相同:

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

參數(shù):

regex - 定界正則表達式
limit - 結果閾值,如上所述

返回:
字符串數(shù)組,它是根據(jù)給定正則表達式的匹配拆分此字符串確定的

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 镇巴县| 普安县| 梧州市| 大荔县| 汪清县| 内江市| 衡阳市| 大同市| 南安市| 德清县| 磐安县| 增城市| 安顺市| 托里县| 湛江市| 新巴尔虎右旗| 竹溪县| 孝感市| 甘洛县| 炎陵县| 罗甸县| 枝江市| 楚雄市| 沙田区| 黑河市| 德兴市| 当雄县| 乐陵市| 万安县| 乳山市| 甘泉县| 乐亭县| 玛纳斯县| 华宁县| 车致| 湖州市| 芷江| 九江市| 行唐县| 项城市| 东丽区|