2016-11-03 23 views
0

我解析各地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

使用CSV解析庫。 –

+0

在「...」CSV字段中也可能出現換行符,可能不是CR-LF,而是LF。檢查是否有下一個字段「雙性戀」。在程序員編輯器中檢查數據(記事本++等)。 –

+0

順便說一下字符串連接,使用+,+ =真的很慢;嘗試一個StringBuilder時,所有的作品。 –

回答

0

取代羅林從你自己的解析器中,你可以使用像OpenCSV這樣的庫。你需要做以下

一)添加的依賴性,如果你使用maven

<dependency> 
     <groupId>net.sf.opencsv</groupId> 
     <artifactId>opencsv</artifactId> 
     <version>2.3</version> 
    </dependency> 

爲了說明我已經使用下面的示例數據,保存爲data.csv對WD

one , two , three 
four,five,"read , these , numerals" 

c)中的示例代碼

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

} 

打印:

Column 1 :one 
Column 2 : two 
Column 3 : three 
Column 1 :four 
Column 2 :five 
Column 3 :read , these , numerals