在 supercsv 中清理 csv 字段的最佳方法是什么?例如 First_Name 列:修剪字段、将第一个字母大写、删除各种字符(引号、逗号、星号等)。是要写一个像FmtName()这样的自定义CellProcessor吗?也许 FmtEmail() 的另一个功能是小写所有内容,删除某些无效字符?
最佳答案
我认为您想问的问题是:
"Is it better to write a custom cell processor that does all the conversions for a column, or to chain multiple reusable processors together?"
例如,使用您的名字示例,您可以:
a) 写一个custom cell processor它在一个处理器中对所有内容进行了修剪、大写和替换:
new ParseFirstName()
b) 将可重用处理器链接在一起(包括现有的 Super CSV 处理器和调用 StringUtils.capitalize() 的新 Capitalize
自定义单元处理器)
new Trim(new Capitalize(new StrReplace("[\",\\*]", "")))
我认为这完全取决于个人喜好。按照 b)
中的方式定义单元处理器可能非常冗长,但这意味着您可以在一处查看所有列的所有转换/验证。
另一方面,为每一列定义一个自定义单元处理器可以使您的单元处理器设置非常干净,但您最终可能会得到重复的代码(例如,如果您想将多个列大写),并且您无法看到所有立即转换。您还将拥有更多类(更多代码)。
关于java - 使用 SuperCSV 清理单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18495603/