2011-12-24 19 views
1

我使用默認構造函數和默認轉義字符,它是反斜槓。 所以CSV格式就是這樣"value1","value2","value3","value4"在openCSV中使用轉義字符

這些值是從CSV文件,Windows XP操作系統中讀取的。

現在的問題是,當作爲雙引號的價值像這樣"aa"," I am "fine", what about u?", "232",我不明白如何逃避雙引號。

有人可以幫我嗎?

+1

你需要修改你的問題。你從控制檯輸入/讀取字符串還是隻分配字符串文字? – adatapost 2011-12-24 12:17:43

回答

1

雙引號的引號字符

CSVParser csv = new CSVParser() 

    String[] result = csv.parseLine('"aa","I am ""fine"", what about u?", "232"') 

    assert result[0] == 'aa' 
    assert result[1] == 'I am "fine", what about u?' 
    assert result[2] == '232' 

更新

這個答案是從以下groovy測試文件OpenCSVTest.groovy的摘錄:

import groovy.util.GroovyTestCase 
import au.com.bytecode.opencsv.CSVReader 
import au.com.bytecode.opencsv.CSVParser 

@Grapes([ 
    @Grab(group='net.sf.opencsv', module='opencsv', version='2.3') 
]) 

class OpenCSVTest extends GroovyTestCase { 

    void testParseQuote() { 
     CSVParser csv = new CSVParser() 

     String[] result = csv.parseLine('"aa","I am ""fine"", what about u?", "232"') 

     assert result[0] == 'aa' 
     assert result[1] == 'I am "fine", what about u?' 
     assert result[2] == '232' 
    } 
} 

運行如下:

$ groovy OpenCSVTest 
. 
Time: 0.009 

OK (1 test) 
+0

這不會編譯。 – Kai 2011-12-24 15:13:30

+1

@ user714965我使用groovy來測試我的Java代碼。很容易轉換爲Java,只需添加分號:-) – 2011-12-24 20:17:37

+0

雙引號雙引號字符正常工作。謝謝@Mark O'Connor。 – Abdullah 2011-12-26 06:59:11

0

在你的問題中,你告訴你正在使用反斜槓的默認轉義字符。所以,你必須使用反斜槓...喜歡:"aa"," I am \"fine\", what about u?", "232"

測試它這樣的代碼:

CSVParser csvParser = new CSVParser(); 
String[] parseLine = csvParser.parseLine("\"aa\",\" I am \"\"fine\"\", what about u?\", \"232\""); 
+1

當Java組裝字符串時,這些斜線正在轉義引號字符。他們沒有被傳遞給CSVParser對象。 – 2011-12-24 20:29:09

+0

這不行,已經試過了。無論如何感謝@ user714965。 – Abdullah 2011-12-26 06:40:12