Супер 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.
Как вы сказали, вы всегда можете написать свой собственный процессор для сотовых телефонов:)