(轉自:http://swiftlet.net/archives/709)
在java.lang包中有String.split()方法的原型是:
public String[] split(String regex, int limit)
split函數是用於使用特定的切割符(regex)來分隔字符串成一個字符串數組,函數返回是一個數組。在其中每個出現regex的位置都要進行分解。
需要注意是有以下幾點:
(1)regex是可選項。字符串或正則表達式對象,它標識了分隔字符串時使用的是一個還是多個字符。如果忽略該選項,返回包含整個字符串的單一元素數組。
(2)limit也是可選項。該值用來限制返回數組中的元素個數。
(3)要注意轉義字符:“.”和“|”都是轉義字符,必須得加"\\"。同理:*和+也是如此的。
如果用“.”作為分隔的話,必須是如下寫法:
String.split("\\."),這樣才能正確的分隔開,不能用String.split(".");
如果用“|”作為分隔的話,必須是如下寫法:
String.split("\\|"),這樣才能正確的分隔開,不能用String.split("|");
(4)如果在一個字符串中有多個分隔符,可以用“|”作為連字符,比如:“acountId=? and act_id =? or extra=?”,把三個都分隔出來,可以用
String.split("and|or");
(5)split函數結果與regex密切相關,常見的幾種情況如下所示:
public class SplitTest { public static void main(String[] args) { String str1 = "a-b"; String str2 = "a-b-"; String str3 = "-a-b"; String str4 = "-a-b-"; String str5 = "a"; String str6 = "-"; String str7 = "--"; String str8 = ""; split(str1); split(str2); split(str3); split(str4); split(str5); split(str6); split(str7); split(str8); } public static void split(String demo){ String[] array = demo.split("-"); int len = array.length; System.out.print("\"" + demo + "\" 分割后的長度為:" + len); if(len >= 0) { System.out.print(",分割后的結果為:"); for(int i=0; i<len; i++) { System.out.print(" \""+array[i]+"\""); } } System.out.println(); } }
運行結果為:
"a-b" 分割后的長度為:2,分割后的結果為: "a" "b"
"a-b-" 分割后的長度為:2,分割后的結果為: "a" "b"
"-a-b" 分割后的長度為:3,分割后的結果為: "" "a" "b"
"-a-b-" 分割后的長度為:3,分割后的結果為: "" "a" "b"
"a" 分割后的長度為:1,分割后的結果為: "a"
"-" 分割后的長度為:0,分割后的結果為:
"--" 分割后的長度為:0,分割后的結果為:
"" 分割后的長度為:1,分割后的結果為: ""
由此可以得出來:
當字符串只包含分隔符時,返回數組沒有元素;
當字符串不包含分隔符時,返回數組只包含一個元素(該字符串本身);
字符串最尾部出現的分隔符可以看成不存在,不影響字符串的分隔;
字符串最前端出現的分隔符將分隔出一個空字符串以及剩下的部分的正常分隔;