2019年10月31日 星期四

JAVA String.split() 的誤區

JAVA String.split() 的誤區

碼農們
String.split 這個方法很好用
但是
人生就是有這個但是

以下字串
"A|B|C|D"
會切出 ["A","B","C","D"]

"A||C|D"
會切出 ["A", ,"C","D"]

"A||C|"
會  java.lang.ArrayIndexOutOfBoundsException: 3


處理方法請參考

String Rstr= "A||C|";
StringBuffer sb = new StringBuffer();
List<String> strArr = new ArrayList<String>();
for (int i=0;i<Rstr.length();i++){
    if(Rstr.charAt(i) == '|') {
        //System.out.print("\n");
        strArr.add(sb.toString());
        //sb = new StringBuffer();
        sb.delete(0, sb.length());
    } else {
        //System.out.print(Rstr.charAt(i));
        sb.append(Rstr.charAt(i));
    }
}
strArr.add(sb.toString());
sb.delete(0, sb.length());

String[] arrayStr = new String[strArr.size()];        
arrayStr = strArr.toArray(arrayStr);
System.out.println(arrayStr[0]);
System.out.println(arrayStr[1]);
System.out.println(arrayStr[2]);
System.out.println(arrayStr[3]);