我使用默認構造函數和默認轉義字符,它是反斜槓。 所以CSV格式就是這樣"value1","value2","value3","value4"
在openCSV中使用轉義字符
這些值是從CSV文件,Windows XP操作系統中讀取的。
現在的問題是,當作爲雙引號的價值像這樣"aa"," I am "fine", what about u?", "232",
我不明白如何逃避雙引號。
有人可以幫我嗎?
我使用默認構造函數和默認轉義字符,它是反斜槓。 所以CSV格式就是這樣"value1","value2","value3","value4"
在openCSV中使用轉義字符
這些值是從CSV文件,Windows XP操作系統中讀取的。
現在的問題是,當作爲雙引號的價值像這樣"aa"," I am "fine", what about u?", "232",
我不明白如何逃避雙引號。
有人可以幫我嗎?
雙引號的引號字符
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)
在你的問題中,你告訴你正在使用反斜槓的默認轉義字符。所以,你必須使用反斜槓...喜歡:"aa"," I am \"fine\", what about u?", "232"
測試它這樣的代碼:
CSVParser csvParser = new CSVParser();
String[] parseLine = csvParser.parseLine("\"aa\",\" I am \"\"fine\"\", what about u?\", \"232\"");
當Java組裝字符串時,這些斜線正在轉義引號字符。他們沒有被傳遞給CSVParser對象。 – 2011-12-24 20:29:09
這不行,已經試過了。無論如何感謝@ user714965。 – Abdullah 2011-12-26 06:40:12
你需要修改你的問題。你從控制檯輸入/讀取字符串還是隻分配字符串文字? – adatapost 2011-12-24 12:17:43