2013-08-01 39 views
1

使用CsvMapWriter如果我添加一個標頭,說'地區',然後寫一個關鍵'區域'和值'東北'的行,它不會被添加到SuperCSV輸出。我假設它沒有找到一個有效的列來將「區域」的值放入。SuperCSV編寫器中不區分大小寫的標題?

對於此應用程序,我無法重新命名標題,如強制小寫。而像'region'和'northeast'這樣的行鍵/值對可以以大寫,小寫或混合形式出現,但不管它應該添加到正確的不區分大小寫的標題列(標題本身可能是'Region' ,'REGION'等)

回答

1

想到兩種解決方案。

  1. 使用CsvBeanWriter代替CsvMapWriter,如果可能的話。

    - 或 -

  2. 包裝你地圖與lowercasing Map實現(或通過使用正確的外殼複製設置新的地圖)。

甲lowercasing地圖實現(org.apache.commons.collections.map.CaseInsensitiveMap)可從Apache Commons Collections

+1

我不確定在這種情況下我可以使用BeanWriter,因爲csv是從7個不同的類中選擇的字段? – xref

+0

@xref您仍然可以添加一個自定義類,其中包含您添加到的所有值,而不是Map。最糟糕的情況是,閱讀你的Map中的所有條目並將它們放入一個帶有全部小寫鍵的新Map中並不會太困難(不是非常高效,但可能不是一個巨大的問題,除非你正在處理100,000行以上)。 –

+0

嗯,我不知道標題的名字是什麼,或者會有多少,因爲每個csv都是唯一的。一個自定義類可以在supercsv中處理嗎? – xref