标记以双引号开头,后跟一些标记,以双引号结尾,以一个标记开头

时间:2016-11-03 09:21:07

标签: java eclipse windows

我正在解析大约10个CSV文件

enter image description here

并进行标记化。所以第四个标记' 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年的女同性恋,男同性恋,双性恋或变性人相关电影名单"

但我只得到"女同性恋,同性恋的名单

1 个答案:

答案 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]);
    }

}