這兒有你的一套測試案例,證明上述:
public class Test {
public static void main(String[] args){
test("x,y");
test(",y");
test("");
test(",");
}
private static void test(String x){
System.out.println("testing split on value ["+x+"]");
String y = x.split(",")[0];
if(null == y){
System.out.println("x returned a null value for first array element");
} else if(y.length() < 1) {
System.out.println("x returned an empty string for first array element");
} else {
System.out.println("x returned a value for first array element");
}
}
}
運行時,這是你會得到什麼:
$ javac Test.java && java Test
testing split on value [x,y]
x returned a value for first array element
testing split on value [,y]
x returned an empty string for first array element
testing split on value []
x returned an empty string for first array element
testing split on value [,]
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at Test.test(Test.java:11)
at Test.main(Test.java:6)
這很容易通過簡單地寫檢查這種行爲一個微小的程序,嘗試這種情況下,看看你得到了什麼 – mfrankli 2012-03-16 19:12:28
它是。即使它不包含給定的正則表達式,它總是會返回初始字符串。 – 2012-03-16 19:12:46
@mfrankli,謝謝。這幾乎是有用的建議。很明顯,我可以編寫一個測試程序(並且有)...我正在詢問一些我可能沒有考慮或想到的異常情況。 – 2012-03-16 19:14:19