內容介紹
本文主要介紹java中特殊字符做為split函數的參數,如:"." 、"\"、"|",雙引號等,不能正確分隔源字符串的處理方法。
代碼示例
使用"|"進行分隔的代碼
String reclassData= "0,15,0|15,30,1|30,45,2|45,60,3|60,75,4|75,90,5|'NODATA','NODATA'";
String[] arrData = reclassData.split("|");
arrData的值如下:
很顯然,這結果不是我們想要的預期結果,追其原因,因為"|"是特殊字符,在使用split函數時,需要轉義,即:"\\|",修改后的代碼如下:
String reclassData= "0,15,0|15,30,1|30,45,2|45,60,3|60,75,4|75,90,5|'NODATA','NODATA'";
String[] arrData = reclassData.split("\\|");
結果如下:
這次結果對了,像"|"這樣的特殊字符還有".","\","$",在使用時,均需要轉義。
String reclassData4 = "0,15,0$15,30,1$30,45,2$45,60,3$60,75,4$75,90,5$'NODATA','NODATA'";
String[] arrData4 = reclassData4.split("\\$");
String reclassData2 = "0,15,0.15,30,1.30,45,2.45,60,3.60,75,4.75,90,5.'NODATA','NODATA'";
String[] arrData2 = reclassData2.split("\\.");
在使用"\"分隔時,要注意在源字符串要使用"\\"進行轉義,而split的參數要使用"\\\\",代碼如下:
String reclassData3 = "0,15,0\\15,30,1\\30,45,2\\45,60,3\\60,75,4\\75,90,5\\'NODATA','NODATA'";
String[] arrData3 = reclassData3.split("\\\\");
盡量避免使用英文狀態下的單引號、雙引號來做為split的參數,如迫不得已,使用下面的方式來處理:
//雙引號的處理
String reclassData5 = "0,15,0\"15,30,1\"30,45,2\"45,60,3\"60,75,4\"75,90,5\"'NODATA','NODATA'"; String[] arrData5 = reclassData5.split("\"");