Синтаксический анализ номера Java с помощью числовых строк со знаком - PullRequest
0 голосов
/ 07 марта 2012

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

+000000000.00000,-0000001000.0000,00000000.000

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

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

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

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

без успеха.

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

1 Ответ

0 голосов
/ 07 марта 2012

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

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

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

...