[筆記]關於split的數組越界問題以及java.lang.ArrayIndexOutOfBoundsException異常

原帖: http://bbs.csdn.net/topics/320263980


問題內容:

今天寫了個字符串拼接程序,中間用到了split方法。但在測試的時候。總是報數組越界錯誤:java.lang.ArrayIndexOutOfBoundsException ;

我寫的測試代碼如下:

public class transferpic {
    public static String concatString(String unselectStr) {
        String splitStr = unselectStr.split(".")[0];
        String selectStr= splitStr.concat("_2.jpg");
        return selectStr;
    }

    public static void main(String[] args) {
        System.out.println(concatString("dfa.jpg"));
    }
}

異常信息如下:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at test.transferpic.concatString(transferpic.java:5)
at test.transferpic.main(transferpic.java:12)

如果我在main方法中,將System.out.println(concatString("dfa.jpg")); 改爲System.out.println(concatString(""));
也就是傳入一個空字符串,它不報錯,會給出一個_2.jpg的結果。




解決方法:

在java.lang包中有String.split()方法,返回是一個數組:
1、如果用“.”作爲分隔的話,必須是如下寫法:String.split("\\."),這樣才能正確的分隔開,不能用String.split("."); 
2、如果用“|”作爲分隔的話,必須是如下寫法:String.split("\\|"),這樣才能正確的分隔開,不能用String.split("|"); “.”和“|”都是轉義字符,必須得加"\\"; 
3、如果在一個字符串中有多個分隔符,可以用“|”作爲連字符,比如:“acount=? and uu =? or n=?”,把三個都分隔出來,可以用String.split("and|or");








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章