簡體   English   中英

使用[az]正則表達式在Java中拆分String

[英]Split String in Java with [a-z] regular expression

我有兩個regexpressions:

[a-c] : any character from a-c

[a-z] : any character from a-z

並測試:

public static void main(String[] args) {
    String s = "abcde";
    String[] arr1 = s.split("[a-c]");
    String[] arr2 = s.split("[a-z]");

    System.out.println(arr1.length); //prints 4 : "", "", "", "de"
    System.out.println(arr2.length); //prints 0 
}

為什么第二次分裂表現得像這樣? 我希望有一個帶有6個空字符串“”結果的reslut。

根據單參數String.split的文檔

此方法的作用就像通過調用具有給定表達式和limit參數為零的雙參數split方法一樣。 因此,結尾的空字符串不包含在結果數組中。

要保留尾隨字符串,可以使用雙參數版本,並指定負限制:

    String s = "abcde";
    String[] arr1 = s.split("[a-c]", -1); // ["", "", "", "de"]
    String[] arr2 = s.split("[a-z]", -1); // ["", "", "", "", "", ""]

默認情況下, split丟棄尾隨空字符串。 arr2情況下,它們都是尾隨空字符串,所以它們都被丟棄了。

要獲得6個空字符串,請將負限制作為第二個參數傳遞給split方法 ,這將保留所有尾隨空字符串。

String[] arr2 = s.split("[a-z]", -1);

如果n是非正數,那么模式將被應用盡可能多的次數,並且數組可以具有任何長度。

String.split()

將此字符串拆分為給定正則表達式的匹配項。

周圍意味着匹配本身被刪除。 例如,分裂“A,B,C”的逗號將只是a以及bc

第一個拆分刪除a,b和c。

第二個刪除所有字母,從而刪除該字符串中的所有字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM