你知道csv中如何輸出英文雙引號嗎??

生成CSV(Comma-Separated Values)檔案是業務的處理結果比較常見的持久化方式。

本文就分享一個將如何在csv檔案中顯示雙引號

工具/原料

IntelliJ IDEA

java

方法/步驟

先上個預期的結果圖:

結果檔案有三列,表頭分別為id,Name,Desc

你知道csv中如何輸出英文雙引號嗎?

再上一段希望生成上述csv的程式碼:

package chapter4;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

/**

* Created by MyWorld on 2016/3/23.

*/

public class CsvWriteWithDoubleQuotation {

public static void main(String[] args) throws IOException {

List source = getResult();

CsvWriteWithDoubleQuotation csvWriter = new CsvWriteWithDoubleQuotation();

csvWriter.write(source);

} private void write(List source) throws IOException {

File file = new File("resultWithDoubleQuotation.csv");

System.out.println(file.getAbsolutePath());

FileWriter fw = new FileWriter(file);

String title = "id,Name,Desc";

fw.write(title + "\n");

for (Peron peron : source) {

fw.write(String.format("%s,%s,\"%s\"\n", peron.getId(), peron.getName(), peron.getDesc()));

}

fw.flush();

fw.close();

} private static List getResult() {

List source = new ArrayList ();

source.add(new Peron(1, "Tom", "I li kui, nicknamed \"black tornado\""));

source.add(new Peron(2, "Jim", "I'm Jim"));

source.add(new Peron(3, "John", "I'm John,twenty years old."));

return source;

}

}class Peron {

private final int id;

private final String name;

private final String desc;

public Peron(int id, String name, String desc) {

this.id = id;

this.name = name;

this.desc = desc;

} public int getId() {

return id;

} public String getName() {

return name;

}

public String getDesc() {

return desc;

}

}

你知道csv中如何輸出英文雙引號嗎?

你知道csv中如何輸出英文雙引號嗎?

執行上述程式碼,

看看生成的結果檔案是否與預期相同

咦,怎麼與預期的不是很一樣了啊,左邊的雙引號怎麼到後面了?

你知道csv中如何輸出英文雙引號嗎?

id,Name,Desc

1,Tom,"I li kui, nicknamed "black tornado""

2,Jim,"I'm Jim"

3,John,"I'm John,twenty years old."

你知道csv中如何輸出英文雙引號嗎?

分析下原因:

與預期輸出不一致的一行:

1,Tom,"I li kui, nicknamed "black tornado""

貌似前面"I li kui, nicknamed "是正常輸出了,後面的兩個雙引號""照原樣輸出了

原來,csv預設由英文雙引號("")括起來的內容是一個欄位, 如果字串放在英文雙引號中,字串中的內容除英文雙引號外,都會按原樣輸出。

那麼,我們這次要輸出的雙引號呢?

csv中約定,欄位裡連續兩個雙引號""顯示成一個

更改下程式碼:

Code:

source.add(new Peron(1, "Tom", "I li kui, nicknamed \"\"black tornado\"\""));

source.add(new Peron(2, "Jim", "I'm Jim.\nAnd I'm a good boy."));

你知道csv中如何輸出英文雙引號嗎?

看看生成的結果與實際是否一致

是一致的!!

OK

你知道csv中如何輸出英文雙引號嗎?

你知道csv中如何輸出英文雙引號嗎?

相關問題答案