最近在項目中,發現了一個bug,充分了展示了自己對java底層的認知有很多的不足和欠缺。
下面有段代碼:
String str="1#2#3";
String[] strs=str.split("#");
System.out.println(strs.length);
ok,上面這段代碼最終輸出結果是2,這沒有問題,但是如果換成下面的寫法呢,請看:
String str="##";
String[] strs=str.split("#");
System.out.println(strs.length);
結果輸出是0,如果再換一種寫法呢,請看:
String str="1##";
String[] strs=str.split("#");
System.out.println(strs.length);
結果輸出是1,那么好了,如果我無論哪種情況都想要2怎么辦,我寫了這樣一段轉換的代碼:
String str="##";
str=str.replaceAll("#", "v^#v^");
String[] strs=str.split("#");
for (int i = 0; i < strs.length; i++) {
String text=strs[i].replaceAll("v\\^", "");
if("".equals(text)){
text="略";
}
System.out.println(text);
}
結果: 
ok,問題完美解決。
