我正在验证 CSV 文件中的特定列,我基本上有两种方法,即
方法 1 我可以使用 BufferedReader 逐行读取 CSV 文件,然后停止 我打了一行以我正在寻找的东西开头
try { BufferedReader br = new BufferedReader( new InputStreamReader(item.getInputStream())); String strLine = ""; StringTokenizer st = null; String value = ""; while ((strLine = br.readLine()) != null) { st = new StringTokenizer(strLine, ","); while (st.hasMoreTokens()) { value = st.nextToken(); if ((value != null) && (("MyString1".equals(value) || ("MyString2".equals(value) || ("MyString3".equals(value))) { // Send error Message } } }
第二种方法是使用 String.split 如下
Scanner s = new Scanner(item.getInputStream()); while(s.hasNextLine()) { String[] fields = s.nextLine().split("\\s*,\\s*", -1); for(int i = 0;i < fields.length;i++) { if(!"".equals(fields[i]) && ... } } s.close();
请提出更好的方法
最佳答案
不要编写自己的 CSV 解析器。 CSV 实际上比您最初想象的要复杂。 (示例:多行值、封装字段、转义字符等等。逗号并不总是分隔字段!)
Use opencsv ,这是一个功能齐全的纯 Java CSV 解析器。
此解析器将轻松让您循环遍历 CSV 文件,并处理各个列和行。上面的链接中给出了示例。
编辑:另外,我忘了提及,它是 Apache2 许可的,因此可以安全地嵌入到商业项目中!
关于java - 验证 CSV 中的特定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6907244/