【发布时间】:2012-09-02 18:39:43
【问题描述】:
由于我们知道 CSV 文件内容的每一行使用\r\n 分隔,因此我们可以轻松获取每一行。代码如下:
scanner.useDelimiter("\r\n");
while(scanner.hasNext()){
scanner.next();
}
但是如果CSV文件的一个字段里面有“\r\n”,那么这段代码就不起作用了!喜欢这里的 CSV:
Row1: "abc\r\nabc","abc","abc"
Row2: "efg", "efg", "efg"
Row3: "hjk", "hjk"
我想使用扫描仪读取:
"abc\r\nabc","abc","abc"
"efg", "efg", "efg"
"hjk", "hjk"
但如果只使用\r\n,结果会是:
“abc
abc","abc","abc"
"efg", "efg", "efg"
"hjk", "hjk"
我应该做些什么改变?如何修改scanner.useDelimiter("\r\n"),使模式可行?
【问题讨论】:
-
分隔符不应该是“,”吗?
-
我想用scanner来分隔行,首先我用的是bufferedreader,但是遇到"\n"就会停止,但是我刚刚发现scanner.useDelimiter("\r\n")也不能正常工作..因为在 CSV 的字段中可能包含“\r\n”。
-
"," 也可以在 CSV 的字段中。在我的代码中,我尝试先分隔行,读取 CSV 的每一行,然后在每一行字段中,使用其他模式分隔它们。
-
如果 \r\n 在引号之间,那么它不是 csv 文件。