Супер CSV и групповые разделители

Мы пытаемся прочитать файл, который содержит числа в следующем формате: 123.456,78 ( согласно Википедии это обычно для некоторых стран - например, Германии).

Super CSV настроен для анализа столбца как BigDecimal: new ParseBigDecimal(new DecimalFormatSymbols(GERMANY)),

Это хорошо работает для чисел ниже 1k, но разделитель группировки не обрабатывается должным образом: '1.999,00' could not be parsed as a BigDecimal,

Я видел, что можно написать собственный процессор для ячеек, но, возможно, кто-то знает, есть ли более простой способ или это известная ошибка в Super CSV.

ОБНОВИТЬ:

Super CSV интегрировал эту функцию и выпустил ее с версией 2.2.0. Это будет работать для всех группирующих разделителей, которые поставляются через DecimalFormatSymbols параметр.

1 ответ

Решение

ParseBigDecimal (до 2.2.0) использует только десятичный разделитель из поставляемого DecimalFormatSymbols (не разделитель группировки). Это не ошибка, а ограничение текущей реализации.

Вы можете связать StrReplace перед ParseBigDecimal (т.е. заменить "." с "") и это должно исправить вашу проблему (быстро).

я думаю что ParseBigDecimal должен на самом деле сделать это для вас. ОБНОВЛЕНИЕ: И так с версии 2.2.0.

Как вы сказали, вы всегда можете написать свой собственный процессор для сотовых телефонов:)

Другие вопросы по тегам