Очистите значения ячеек с помощью SuperCSV

Как лучше всего очистить поля из CSV в supercsv? Например, столбец First_Name: обрезать поле, сделать первую букву заглавной, удалить различные символы (кавычки, запятые, звездочки и т. д.). Нужно ли писать собственный CellProcessor, например FmtName()? Может быть, еще один для FmtEmail(), который переводит все в нижний регистр, удаляет некоторые недопустимые символы?


person xref    schedule 28.08.2013    source источник


Ответы (1)


Я думаю, что вопрос, который вы пытаетесь задать, таков:

«Что лучше: написать собственный обработчик ячеек, который будет выполнять все преобразования для столбца, или связать вместе несколько многоразовых процессоров?»

Например, с вашим примером имени вы можете:

а) написать пользовательский обработчик ячеек, который обрезает, капитализирует и заменяет все в одном процессоре:

new ParseFirstName()

b) объединять процессоры многократного использования (включая существующие процессоры Super CSV и новый процессор Capitalize пользовательских ячеек, который вызывает StringUtils.capitalize())

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

Я думаю, что это действительно зависит от личных предпочтений. Определение процессоров ячеек, как это сделано в b), может быть довольно подробным, но это означает, что вы можете увидеть все преобразования/проверки для всех столбцов в одном месте.

С другой стороны, определение пользовательского обработчика ячеек для каждого столбца делает настройку вашего обработчика ячеек очень чистой, но вы можете получить дублированный код (например, если вы хотите использовать заглавные буквы для нескольких столбцов), и вы не сможете увидеть все преобразования сразу. . У вас также будет больше классов (больше кода).

person James Bassett    schedule 28.08.2013
comment
В итоге я использовал комбинацию обоих методов, обобщая то, что может быть (например, Capitalize), и создавая SanitizeFirstName для выполнения уникальных вещей, таких как удаление мистера/миссис/мисс и т. д. Спасибо Hound Dog! - person xref; 04.09.2013