最近在項目中,發現了一個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,問題完美解決。