split()方法分割字串中的問題
阿新 • • 發佈:2019-02-07
使用split()方法可以是字串按指定的分割字元或字串對內容進行分割,並將分割後的結果存放在字串陣列中。split()方法提供了以下兩種過載形式:
(1)split(String sign)
該方法可根據給定的分割符對字串進行拆分。
語法如下:
str.split(String sign)
其中,sign未分割字串的分隔符,也可以使用正則表示式。
(2)split(String sign , int limit)
該方法可以根據給定的分割符對字串進行拆分,並限定拆分的次數。
語法如下:
str.split(String sign , int limit)
sign : 分割字串的分隔符,也可以使用正則表示式。
limit:限制的分割次數。(等於分割後字元陣列的元素個數)
在使用過程中,發現如果字串中有“.”,並且想用“.”來分隔字串,出現瞭如下問題:
程式碼1:
System.out.println("***********");
String s13 = new String("abc.def.ghi.gkl");
String[] s14 = s13.split(".",2);
for (int i = 0; i < s14.length; i++) {
System.out.println(s14[i]);
}
System.out .println("-----------");
執行結果:
結果顯示分解後產生了2個字串:“ ”和“bc.def.ghi.gkl”
如果程式碼改為
程式碼2:
System.out.println("***********");
String s13 = new String("abc.def.ghi.gkl");
String[] s14 = s13.split(".");
for (int i = 0; i < s14.length; i++) {
System.out.println (s14[i]);
}
System.out.println("-----------");
結果:
進一步,將程式碼改為
程式碼3:
System.out.println("***********");
String s13 = new String("abc/def/ghi/gkl");
String[] s14 = s13.split("./");
for (int i = 0; i < s14.length; i++) {
System.out.println(s14[i]);
}
System.out.println("-----------");
結果:
經驗證,這時因為“.”在正則表示式中匹配除“\r\n”外的任何單個字元。
想要用“.”來分割字串的正確程式碼:
System.out.println("***********");
String s13 = new String("abc.def.ghi.gkl");
String[] s14 = s13.split("\\.");
for (int i = 0; i < s14.length; i++) {
System.out.println(s14[i]);
}
System.out.println("-----------");
結果: