我正在解析大约10个CSV文件
并进行标记化。所以第四个标记' PageTitle'有时以双引号开头(")。为此,我正在特别照顾
String page = st.nextToken();
if(page.startsWith("\""))
{
String s;
while(!(s=st.nextToken()).endsWith("\""))
{
System.out.println(page);
page += (","+s);
System.out.println(page);
}
page += (","+s);
page = page.substring(0, page.length());
}
我不知道我在哪里做错了但是我想读取令牌,从双引号开始,然后是一些令牌,以双引号结尾,写成一个像这样的标记
" 2012年的女同性恋,男同性恋,双性恋或变性人相关电影名单"
但我只得到"女同性恋,同性恋的名单
答案 0 :(得分:0)
您可以使用像OpenCSV这样的库,而不是推出自己的解析器。您需要执行以下操作
a)如果您使用maven
,请添加依赖项SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;
为了说明我使用了以下样本数据,在WD
上保存为data.csv <dependency>
<groupId>net.sf.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>2.3</version>
</dependency>
c)示例代码
one , two , three
four,five,"read , these , numerals"
打印:
CSVReader reader = new CSVReader(new FileReader("data.csv"));
String [] nextLine;
while ((nextLine = reader.readNext()) != null) {
// nextLine[] is an array of values from the line
System.out.println("Column 1 :"+nextLine[0]);
System.out.println("Column 2 :"+nextLine[1]);
System.out.println("Column 3 :"+ nextLine[2]);
}
}