次のような CSV データがあります。
1,mm/dd/yy,"abc,def,"pqr",xyz"
これを3つの文字列に解析したいと思います。
1
月/日/年
残りのすべてのデータ、この場合は "abc,def,"pqr",xyz"
私はopenCSV、javacsvなどのいくつかのライブラリを試しました。それらはすべて、最後の列も解析およびトークン化しているようです。私が欲しいのは、2列目の後のデータを単一のトークンとして残すことです。
何か案は ?
次のような CSV データがあります。
1,mm/dd/yy,"abc,def,"pqr",xyz"
これを3つの文字列に解析したいと思います。
1
月/日/年
残りのすべてのデータ、この場合は "abc,def,"pqr",xyz"
私はopenCSV、javacsvなどのいくつかのライブラリを試しました。それらはすべて、最後の列も解析およびトークン化しているようです。私が欲しいのは、2列目の後のデータを単一のトークンとして残すことです。
何か案は ?
int firstCommaIndex = s.indexOf(',');
int secondCommaIndex = s.indexOf(',', firstCommaIndex + 1);
String firstPart = s.substring(0, firstCommaIndex);
String secondPart = s.substring(firstCommaIndex + 1, secondCommaIndex);
String lastPart = s.substring(secondCommaIndex + 1);
https://github.com/CyborTronic/fluent-ssvでカスタム LineParser を使用できます
また、CSV データを Bean に変換することもできますが、日付型の場合は ValueConverter のカスタム実装を提供する必要があります。それ以外の場合は、文字列として保存してから操作できます。
したがって、コードは次のようになります。
new SsvStreamBuilder<MyBean>()
.forEntity(MyBean.class)
.withLineParser(new MyLineParser())
.withValueConverter(new MyDateConverter())
.stream("~/some/csv/file");
SuperCSVを試してください。引用されたテキストの処理を表現しているように見えるquoteChar構成オプションがあります。