我正在逐行读取csv文件,并在此基础上分隔每一行 tab delimiter。文件中有一行如下: -
“\”255U-2968RYE \“\”组织\“\”SMBC日兴证券株式会社\“\”2968RYE \“
我使用了分割功能格式分割(“\ t(?=([^ \”] \“[^ \”] \“) [^ \”] $)“, - 1)。在我看来 split函数应该返回一个大小为4的String数组。但它不能像我一样工作 期待。我尝试在eclipse中更改编码类型并使用不同的-2,如utf-8, ISO-8859-1但没有奏效。文件是csv格式。我正在使用CSV打开它 来源api。如下图所示。
String read[];
int row = 0;
int columns = 0;
int totalElement = 0;
String msg = null;
int cols = (int) Double. parseDouble(totalColumns);
try
{
CSVReader reader = new CSVReader(new FileReader(filePath),'\n');
if(titleAllowed.equalsIgnoreCase("yes"))
reader.readNext();
while((read=(reader.readNext()))!=null)
{
row++;
if(row==1)
{
columns = (read[0].split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)",-1)).length;
if(cols !=columns)
{
JOptionPane.showMessageDialog(null, "Columns not matched as mentioned in checkList");
return false;
}
}
if((columns!=0)&&(columns!=read[0].split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)",-1).length))
{
msg = "Error exists in line "+row;
return false;
}
if(!read[0].equals(""))
totalElement+=(read[0].split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)",-1)).length;
}
reader.close();
}catch(Exception e)
{
e.printStackTrace();
}
if(null!=msg)
{
JOptionPane.showMessageDialog(null, msg);
}
return (totalElement==row*columns);
非常感谢正确答案。提前致谢