【发布时间】:2018-04-01 10:18:11
【问题描述】:
我有下面的代码块,它使用 OpenCSV 读取 CSV 文件并存储第 7 列。我面临的问题是我在 CSV 文件中使用 ; 作为分隔符,但它也使用 , 作为分隔符。我怎样才能避免这种情况?
无法将 "" 放入 CSV,因为我们从客户端获取了不可编辑的文件。
CSVReader reader = null;
String[] nextCsvLine = new String[50];
String splitBy = ";";
int count = 0;
try {
StringReader sr = new StringReader(new String(in, offset, len));
reader = new CSVReader(sr);
while ((nextCsvLine = reader.readNext()) != null) {
for (String linewithsemicolon : nextCsvLine) {
log.debug("Line read : "+linewithsemicolon);
String[] b = linewithsemicolon.split(splitBy);
if (count==0){
count++;
continue;
}
else {
detailItems.add(b[7]);
log.debug("7th position: "+b[7]);
count++;
}
}
【问题讨论】:
-
这是什么语言?它看起来像 Java。您需要使用编程语言标记您的问题 - 请参阅问题下方的“编辑”链接。
-
是的,它的 JAVA 很抱歉忘记链接。
-
您发布的代码对逗号根本没有反应。请提供minimal reproducible example。
-
为了简化我的问题,我是否有可能只阅读到第 8 列然后跳到下一行?行可能有 30 列甚至更多,但我只想阅读第 8 列并移至下一行。
-
请注意,
for (String linewithsemicolon : nextCsvLine)已经表明您的问题:nextCsvLine表示表示为元素集合或数组的行,而linewithsemicolon表示您正在处理 one 元素作为一条线。这不太合适,应该已经暗示了读者的问题。正如已经回答的那样,您可以为 CSVReader 提供分隔符,但如果这不可能,那么使用 CSVReader 将是一个值得商榷的决定。