大家好, 我正在将项目从C#转换为Java。我必须分析一些 CSV文件。在C#中一切正常,但在Java中我无法使其工作正常 方式。 例如,有两个文件中的行: US,Dimanco,Inc,001 US,ClassB ,002 我正在尝试使用逗号作为分隔符将这些行拆分为单独的项目。 这是我的代码:
import java.io.IOException; import java.io.StringReader; import com.opencsv.CSVReader; public static void main( String [] args){ // 逗号分隔字符串的测试 字符串 [] c1 = null; String [] c2 = null; 字符串 s1 = \US \,\Dimanco,Inc \,\001 \; 字符串 s2 = \US \,\Class \B \\,\002 \; c1 = s1.split( ,, - 1 ); c2 = s2.split( ,, - 1 ); System.out.println(s1); System.out.println(s2); System.out.println( c1.length = + c1 。长度); printArray(c1); System.out.println( c2.length = + c2.length); printArray(c2); CSVReader reader1 = new CSVReader( new StringReader(s1 )); String [] tokens1 = null; 尝试 { while ((tokens1 = reader1.readNext())! = null){ } } catch (IOException e){ e.printStackTrace( ); } System.out.println( tokens1.length = + tokens1.length); printArray(tokens1); CSVReader reader2 = new CSVReader( new StringReader(s2)); String [] tokens2 = null; 尝试 { while ((tokens2 = reader2.readNext())! = null){ } } catch (IOException e){ e.printStackTrace( ); } System.out.println( tokens2.length = + tokens2.length); printArray(tokens2); } 静态 void printArray( String [] arr){ String out = new String (); for ( int i = 0; i< arr.length; i ++){ out + = arr [i] + < - >; } System.out.println(out); }首先我尝试使用常见的split()函数。其结果是: US,Dimanco,Inc,001 US,ClassB,002 c1.length = 4 US< - >Dimanco< - > Inc< - > 001< - > c2.length = 3 US< - > 类B< - > 002< - > 第一行拆分为4项,第二行拆分为3.显然 拆分()不会忽略双引号内的逗号。我想将每一行分成 分为3个项目。 其次我尝试OpenCSV这个结果: 线程main中的异常java.lang.NoClassDefFoundError:org / apache / commons / lang3 / StringUtils at com.opencsv.CSVParser.isAllWhiteSpace(CSVParser。 java:543) at com.opencsv.CSVParser.parseLine(CSVParser.java:372) at com.opencsv.CSVParser.parseLineMulti(CSVParser.java:299) at com.opencsv.CSVReader.readNext(CSVReader.java:276) at PortiaMoxy.StringSplitTest.main(StringSplitTest.java:43) 引起:java.lang.ClassNotFoundException:org.apachemons.lang3.StringUtils java.URLClassLoader $ 1.run(未知来源) at java.URLClassLoader $ 1.run(未知来源) at java.security.AccessController.doPrivileged(Native Method) at java.URLClassLoader.findClass(Unknown)来源) at java.lang.ClassLoader.loadClass(Unknown Sourc e) at sun.misc.Launcher $ AppClassLoader.loadClass(未知来源) at java.lang.ClassLoader.loadClass(Unknown Source) ... 5更多 有谁知道我错在哪里?
解决方案1.run(Unknown来源) 在java.URLClassLoader1.run(未知来源) at java.security.AccessController.doPrivileged(Native Method) at java.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader。 loadClass(Unknown Source) at sun.misc.Launcher
AppClassLoader.loadClass(Unknown Source) at java.lang。 ClassLoader.loadClass(未知来源) ... 5更多 有谁知道我在哪里错?
Hi guys, I'm converting a project from C# to Java. I have to analyze some CSV files. Everything works fine in C#, but in Java I can't make it work the right way. For example, there are two lines in the file: "US", "Dimanco, Inc", "001" "US", "Class "B"", "002" I'm trying to split these lines into separate items using comma as a separator. Here's my code:
import java.io.IOException; import java.io.StringReader; import com.opencsv.CSVReader; public static void main(String[] args) { // test of comma separated strings String[] c1 = null; String[] c2 = null; String s1 = "\"US\",\"Dimanco, Inc\", \"001\""; String s2 = "\"US\", \"Class\"B\"\", \"002\""; c1 = s1.split(",", -1); c2 = s2.split(",", -1); System.out.println(s1); System.out.println(s2); System.out.println("c1.length = " + c1.length); printArray(c1); System.out.println("c2.length = " + c2.length); printArray(c2); CSVReader reader1 = new CSVReader(new StringReader(s1)); String[] tokens1 = null; try { while((tokens1 = reader1.readNext())!=null) { } } catch (IOException e) { e.printStackTrace(); } System.out.println("tokens1.length = " + tokens1.length); printArray(tokens1); CSVReader reader2 = new CSVReader(new StringReader(s2)); String[] tokens2 = null; try { while((tokens2 = reader2.readNext())!=null) { } } catch (IOException e) { e.printStackTrace(); } System.out.println("tokens2.length = " + tokens2.length); printArray(tokens2); } static void printArray(String[] arr) { String out = new String() ; for(int i=0; i< arr.length; i++) { out += arr[i] + " <-->"; } System.out.println(out); }First I try to use common split() function. The result is: "US","Dimanco, Inc", "001" "US", "Class"B"", "002" c1.length = 4 "US" <-->"Dimanco <--> Inc" <--> "001" <--> c2.length = 3 "US" <--> "Class"B"" <--> "002" <--> The first line split into 4 items and the second line split into 3. Obviously split() does not ignore comma inside double quotes. I'd like each line to split into 3 items. Second I try OpenCSV with this result: Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils at com.opencsv.CSVParser.isAllWhiteSpace(CSVParser.java:543) at com.opencsv.CSVParser.parseLine(CSVParser.java:372) at com.opencsv.CSVParser.parseLineMulti(CSVParser.java:299) at com.opencsv.CSVReader.readNext(CSVReader.java:276) at PortiaMoxy.StringSplitTest.main(StringSplitTest.java:43) Caused by: java.lang.ClassNotFoundException: org.apachemons.lang3.StringUtils at java.URLClassLoader$1.run(Unknown Source) at java.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 5 more Does anyone know where I am wrong?
解决方案 1.run(Unknown Source) at java.URLClassLoader1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.LauncherAppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 5 more Does anyone know where I am wrong?更多推荐
Java split()OpenCSV
发布评论