Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从csv文件读取记录头-java_Java_Csv - Fatal编程技术网

从csv文件读取记录头-java

从csv文件读取记录头-java,java,csv,Java,Csv,我有一个csv文件,如下所示: Field 1 field 2 field 3 TestData MARTIN,12/2/2/2:JOHN 12/2/2 2015/12/12 我想从字段2中提取姓名,例如Martin和John。我读入文件并按,拆分。这并不完全有效,因为字段2中包含逗号并将其拆分。是否有解决方法或从特定单元格提取数据的方法(例如,只需从文件中提供所有字段2) 通常,如果CSV上

我有一个csv文件,如下所示:

Field 1    field 2                             field 3             
TestData   MARTIN,12/2/2/2:JOHN 12/2/2      2015/12/12

我想从
字段2
中提取姓名,例如
Martin
John
。我读入文件并按
拆分。这并不完全有效,因为
字段2
中包含逗号并将其拆分。是否有解决方法或从特定单元格提取数据的方法(例如,只需从文件中提供所有字段2)

通常,如果CSV上的字段包含COMA,则需要对其进行引用。所以一条线应该是这样的:

TestData,“MARTIN,12/2/2/2:JOHN 12/2/2”,2015/12/12

您确定没有TSV(制表符分隔值)文件吗?在这种情况下,您可以执行拆分操作

String[] fields = line.split('\t')
String[] persons = split(1).split(',')

处理CSV文件的最佳方法是使用CSV库。我使用OpenCSV,但还有其他的。OpenCSV很好地处理转义逗号以及读取标题等。它还处理制表符分隔的文件。

包含逗号的字段应在CSV中引用,包含引号的字段将通过另一个引号转义。例如:

"here's a comma, and some ""quoted text"" as well"
然而,CSV“格式”有点像噩梦


我不建议尝试编写自己的解析器。

一开始看起来不像CSV文件。在CSV语法中,通常使用双引号(例如:
“John”、“1231.23”、“Male”
)对逗号进行转义。如果字段中存在未转义的逗号,则这不是CSV文件,而是TSV(制表符分隔值)格式。不过,仔细检查,“MARTIN,12/2/2:John 12/2/2”似乎也不太常见。你好像在马丁后面有个“,”和约翰后面有个“,”。因此,您可能需要使用
String.indexOf
String.substring