我有以下值的CSV文件:無法如果包含 「」
10〜30〜 「解析CSV映射~~值」 〜40〜50
當我嘗試解析該CSV與分隔符〜
IAM得到的值,如:
10,30,測繪,數值,40,50
但實際的結果應該是這樣的:
10,30,映射~~值,40,50(當任何東西都用雙引號括起來時,它應該佔總值)
任何人都可以幫我這方面。
我有以下值的CSV文件:無法如果包含 「」
10〜30〜 「解析CSV映射~~值」 〜40〜50
當我嘗試解析該CSV與分隔符〜
IAM得到的值,如:
10,30,測繪,數值,40,50
但實際的結果應該是這樣的:
10,30,映射~~值,40,50(當任何東西都用雙引號括起來時,它應該佔總值)
任何人都可以幫我這方面。
雖然CSV文件看起來很簡單,但它們非常複雜,因爲它們需要處理分隔符是值的一部分的情況(在您的案例中使用引號),或者甚至引號出現在字符串中時(通常編碼爲雙引號)。因此,一個簡單的String.split不足以解析CSV文件。 有幾個庫提供CSV閱讀器,使用其中的一個。例子是上面提到的openCSV,或者Apache的:http://commons.apache.org/proper/commons-csv/
試試這個。
假設line
是來自CSV文件的一行。下面的代碼將正確地將它拆分爲項目:
String[] items = line.trim().split(',(?=([^\"]*\"[^\"]*\")*[^\"]*$)')
不要重新發明輪子,使用輕量級和高性能的'opencsv'庫。 – 2014-10-28 18:26:41
你用什麼來解析csv? – 2014-10-28 18:30:25
下面是我使用的代碼 \t String line = null; \t \t的BufferedReader的BufferedReader =新的BufferedReader(新的FileReader( \t \t \t \t csvFilePath)); \t \t 而\t(!(線= bufferedReader.readLine())= NULL){ \t \t \t \t線= line.toString(); \t \t \t \t csvRecords.add(Arrays.asList(line.split(delimiter))); \t \t \t \t} – 2014-10-28 18:35:33