いくつかのライブラリがあります。次に2つの例を示します。
❐ApacheCommonsLang
Apache Commons Langには、文字列(CSV、EcmaScript、HTML、Java、Json、XML)をエスケープまたはアンエスケープするための特別なクラスが含まれています: org.apache.commons.lang3.StringEscapeUtils
。
-
エスケープ CSVへ
String escaped = StringEscapeUtils .escapeCsv("I said \"Hey, I am 5'10\".\""); // I said "Hey, I am 5'10"." System.out.println(escaped); // "I said ""Hey, I am 5'10""."""
-
Unescape CSVから
String unescaped = StringEscapeUtils .unescapeCsv("\"I said \"\"Hey, I am 5'10\"\".\"\"\""); // "I said ""Hey, I am 5'10"".""" System.out.println(unescaped); // I said "Hey, I am 5'10"."
*ダウンロードできます ここ。
❐OpenCSV
OpenCSVを使用する場合 、コンテンツの書き込みまたは読み取りのみを行うために、エスケープまたはエスケープ解除について心配する必要はありません。
-
ファイルの書き込み:
FileOutputStream fos = new FileOutputStream("awesomefile.csv"); OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8"); CSVWriter writer = new CSVWriter(osw); ... String[] row = { "123", "John", "Smith", "39", "I said \"Hey, I am 5'10\".\"" }; writer.writeNext(row); ... writer.close(); osw.close(); os.close();
-
ファイルの読み取り:
FileInputStream fis = new FileInputStream("awesomefile.csv"); InputStreamReader isr = new InputStreamReader(fis, "UTF-8"); CSVReader reader = new CSVReader(isr); for (String[] row; (row = reader.readNext()) != null;) { System.out.println(Arrays.toString(row)); } reader.close(); isr.close(); fis.close();
*ダウンロードできます ここ。