[英]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。
此方法的作用就像通過調用具有給定表達式和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
以及b
和c
。
第一個拆分刪除a,b和c。
第二個刪除所有字母,從而刪除該字符串中的所有字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.