2012-03-07 1 views
0

Я использую интеграцию данных Pentaho для анализа значений CSV. В одном из входных файлов, у меня есть столбцы чисел, которые отформатированы как таковые:Задача разбора номера Java с номерами строк со знаком

+000000000.00000,-0000001000.0000,00000000.000 

данных Интеграция использует ряд Java разбор строку формата, которые по-видимому, могут обрабатывать отрицательный знак без проблем, а отсутствие знака без проблем, но когда он встретит знак '+', произойдет сбой. Если я включу '+' в строку формата номера, он обработает значение '+', но затем сбой не будет с номером '+'.

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

Я попытался использовать обозначения, такие как:

+?###,##0.##### 

без успеха.

Есть ли способ передать числовой формат строке, которая будет обрабатывать символ «+», если она присутствует, и игнорировать, когда это не так?

+0

Можете ли вы попробовать исправить код для библиотеки? Это звучит как ошибка для меня. –

+0

Привет, Питер. Ошибка в том, что «+?» должно сработать? – ProtoFly

+0

Это одно возможное решение. Все, что действительно работает. –

ответ

0

Я вижу только эти варианты:

  1. Создайте свою собственную версию DecimalFormat и DecimalFormatSymbols классов, чтобы добавить знак плюс для синтаксического анализа; возможно, названный ExtendedDecimalFormat и ExtendedDecimalFormatSymbols или некоторые такие. добавьте определение PlusSign в ExtendedDecimalFormatSymbols (getter, setter, serialization, blah). Если вы сделаете это, поставьте его на git и сделайте его открытым исходным кодом (чтобы другим не пришлось повторять работу).

  2. Перед передачей строки парсеру csv вычеркните любые знаки плюса.

 Смежные вопросы

  • Нет связанных вопросов^_^