2012-04-15 24 views
2

基本上我的問題是這樣的,我需要解析文本,其中,是分隔符,但不應檢查任何分號爲" "的引號。這是什麼Scanner.skip方法是什麼?我會自己檢查它,但我不明白如何在java中編寫正則表達式模式,其中令牌在兩個" "之間。我還希望在由有效的,分隔的正確標記中包含任何引用的文本。讓掃描儀包含但忽略引用的文本?

+0

聽起來像你正試圖p ass一個CSV文件,尋找像http://sourceforge.net/projects/javacsv/或類似的任何CSV庫。 – Kennet 2012-04-15 16:54:37

回答

2

前段時間我研究過這個問題,沒有找到足夠快的解決方案。

結果,我併入一個簡單的自定義串分離器(其忽略引號之間的分隔符)轉換成一個開源項目我上工作:

QuoteAwareStringSplitter.java

例如:

public static void main(String[] args) throws IOException 
{ 
    String s = "ads,asdas,das,das, \"ahda,asd,as,d,a\", adsa"; 
    String[] tokens = QuoteAwareStringSplitter.splitLine(s); 
    for (String token : tokens) 
    { 
     System.out.println(token); 
    } 
} 

打印:

ads 
asdas 
das 
das 
ahda,asd,as,d,a 
adsa 
+0

我希望有一種方法可以做到這一點,不需要手動通過字符去char,但如果是這樣的話,我猜這樣的解決方案不是太糟糕。 – user1086516 2012-04-15 17:12:32

+1

在某些時候,它必須是char字符。當你使用像'QuoteIgnorringStringSplitter'這樣的東西的時候,它會從你的代碼中抽象出來。 – DerMike 2012-04-15 17:19:04

+1

那麼,無論您選擇哪種庫或解決方案,即使是基於正則表達式的解決方案,都將通過'char'通過'char'進行設置,作爲其實施的一部分。它只會隱藏起來。正則表達式不是魔術......編輯:@DerMike擊敗了我:) – ulmangt 2012-04-15 17:19:09