0

supercsvでcsvからフィールドをサニタイズする最良の方法は何ですか? たとえば、First_Name 列: フィールドをトリムし、最初の文字を大文字にし、さまざまな文字 (引用符、カンマ、アスタリスクなど) を削除します。FmtName() のようなカスタム CellProcessor を作成することですか? すべてを小文字にし、特定の無効な文字を削除する FmtEmail() の別のものでしょうか?

4

1 に答える 1

2

あなたが尋ねようとしている質問は次のとおりだと思います。

「列のすべての変換を行うカスタム セル プロセッサを作成するのと、複数の再利用可能なプロセッサを連鎖させるのとではどちらがよいでしょうか?」

たとえば、名の例では、次のいずれかを実行できます。

a) 1 つのプロセッサですべてをトリミング、大文字化、置換したカスタム セル プロセッサを作成します。

new ParseFirstName()

b) 再利用可能なプロセッサ (既存の Super CSV プロセッサとStringUtils.capitalize()Capitalize呼び出す新しいカスタム セル プロセッサを含む) をチェーン化する

new Trim(new Capitalize(new StrReplace("[\",\\*]", "")))

本当に個人の好みによると思います。セル プロセッサを定義するのb)は非常に冗長ですが、すべての列のすべての変換/検証を 1 か所で確認できることを意味します。

一方、列ごとにカスタム セル プロセッサを定義すると、セル プロセッサの設定が非常にきれいになりますが、コードが重複する可能性があり (たとえば、複数の列を大文字にしたい場合)、一度にすべての変換を確認することはできません。 . クラスも増えます (コードも増えます)。

于 2013-08-28T23:25:12.443 に答える