首頁  >  文章  >  Java  >  Java的split方法使用詳解

Java的split方法使用詳解

高洛峰
高洛峰原創
2017-01-18 15:36:081314瀏覽

相信大家都常使用String 的split方法,但大家有沒有遇到下面的這種情況:

大家想想下面的程式碼執行結果是什麼

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);
}

執行結果:

Java的split方法使用詳解

執行結果:

執行結果:

執行結果:

執行結果:




執行結果:


執行結果:

執行結果:

出現這樣的結果呢,查找API發現了解決方法

解決方法:  

    透過查看API我們發現我們常用的split方法預設傳遞的是0,現在解決str2輸出空的解決方法是傳遞的第二個參數為負數,即可

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);
}


經查找API發現在String類別中,存在兩個split重載方法


1.public String[] split(String regex)

根據給定正則表達式的匹配分此字串。


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

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


Regex 結果

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

🎜參數:🎜    regex - 定界正值字串式字串表達式是根據給定正規表示式的匹配拆分此字串確定的🎜拋出:🎜PatternSyntaxException - 如果正規表示式的語法無效🎜🎜🎜2.public String[] split(String regex,int limit)🎜🎜根據匹配給定的正規表示式來拆分此字串。 🎜🎜此方法傳回的陣列包含此字串的子字串,每個子字串都由另一個符合給定表達式的子字串終止,或由此字串末尾終止。數組中的子字串會依照它們在此字串中出現的順序排列。如果表達式不符合輸入的任何部分,那麼所得數組只具有一個元素,即此字串。 🎜🎜limit 參數控制模式應用的次數,因此影響所得數組的長度。如果該限制 n 大於 0,則模式將被最多應用 n - 1 次,數組的長度將不會大於 n,而且數組的最後一項將包含所有超出最後匹配的定界符的輸入。如果 n 為非正,那麼模式將被應用盡可能多的次數,而且陣列可以是任何長度。如果 n 為 0,那麼模式將被應用盡可能多的次數,數組可以是任何長度,並且結尾空字串將被丟棄。 🎜🎜例如,字串"boo:and:foo" 使用這些參數可產生以下結果:🎜🎜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) 形式與下列表達式產生的結果完全相同:🎜🎜    Pattern.compile(regex).split(str, n)🎜🎜參數:🎜🎜🎜regex - 定界正則表達式🎜limit - 結果閾值,如上所述🎜regex - 定界正則表達式🎜limit - 結果閾值,如上所述🎜🎜字符串🎜組它是根據給定正則表達式的匹配拆分此字串確定的🎜🎜🎜拋出:🎜PatternSyntaxException - 如果正則表達式的語法無效🎜🎜更多Java的split方法使用詳解相關文章請關注PHP中文網網! 🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn