java - 使用 SuperCSV 清理单元格值

标签 java supercsv

在 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/

相关文章:

java - java中的Mark()/重置BufferedReader

java - 使用 SuperCSV 跳过 CSV 文件中的可选 header

java - 使用 supercsv 的 CSV header 验证

java - 如何使用 AspectJ 有条件地记录不同的数据?

java - 如何实现 ServletContextListener 来监听一个消息队列? (Tomcat, ActiveMQ)

java - 字符串替换方法是否使用正则表达式?

java - 使用 JDBC 连接器 5.1 从 Java 读取/写入 MySQL 中的 UTF-8 数据时出现问题

java - 使用 SuperCSV 解析器时出现问题

java - super CSV 和推土机 : Can't find SurveyResponse class

java - SuperCSV 附加而不是覆盖?