final BufferedReader bufferedReader = new BufferedReader(new
InputStreamReader(file.getInputStream(entry)));
String line = "";
while ((line = bufferedReader.readLine()) != null) {
System.out.println("line" + line);
final String[] rows = line.split(",");
这是我的csv文件
" 9:42:43AM","Aug 20, 2015","RaceSummary","Page:1","Id","Race","Type","Rot.","District","PrideFor","ArtSeq","ReportSeq","Content","Type","Md","Bar Group","1","LINC ADAPTER SECTION 4","Content","N","A - ARLIN","1","1","1","Oscar James, Sr.","Content","0","<N.P.>"
我正在尝试打印我在csv中提到的列。但是我不知道为什么我的输出正在达到“Pride”作为一行而“For”作为另一行就像它重复接下来的两行价值观(“ArtSeq”,“ReportSeq”)。任何人都可以建议我哪里出错了。 感谢。
答案 0 :(得分:1)
正如您在输入中所看到的,您的第二个值有逗号“2015年8月20日”,这会导致更多的分割数量超出您的预期。 示例: 你会期望这个“上午9:42:43”,“2015年8月20日”是2部分,但它将是3个
$em->attach('ZfcUser\Service\User', 'register', function($e) {
$user = $e->getParam('user'); // User account object
$authenticationPlugin = new AuthenticationPlugin();
$authenticationPlugin->someAction($user->getEmail());
});
您可以将拆分更改为
[0]" 9:42:43AM"
[1]"Aug 20
[2] 2015"
我认为应该解决你的问题。
答案 1 :(得分:1)
根据您提供的输出...
line" 9:42:43AM","Aug 20, 2015","Race Summary","Page: 1","Id","Race","Type","Rot.","District","Pride
lineFor","Art lineSeq","Report lineSeq","Content","Type","Md","Bar Group","1","LINC ADAPTER SECTION 4","Content","N","A - ARLIN","1","1","1","Oscar James, Sr.","Content","0","<N.P.>"
考虑到它与您的输入不同,我猜测输入文件中可能存在特殊字符或某些内容(例如,制表符或行间距)。这导致你的while循环读取第一行(直到换行符),然后读取下一行。如果你将这两个放在文件的同一行,它可能会更好。
我也应该澄清一下,你发布的代码中没有任何内容会导致这种行为,它可能是代码中的其他地方或文件本身。