带有签名数字字符串的Java编号解析挑战

时间:2012-03-07 16:47:53

标签: java parsing etl pentaho number-formatting

我正在使用Pentaho的数据集成来解析CSV值。在其中一个输入文件中,我有一些数字列,其格式如下:

+000000000.00000,-0000001000.0000,00000000.000

数据集成使用Java编号解析格式字符串,显然可以毫无问题地处理负号,并且没有问题但没有问题,但遇到'+'符号时,将失败。如果我在数字格式字符串中包含'+',它将处理'+'值,但在没有'+'的情况下失败。

我无法控制数据的输入方式,唯一的规则似乎是如果特定列中有任何负值,那么所有值都会在数字前面有一个符号。

我试图使用符号来表示:

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

没有成功。

有没有办法将数字格式化为一个字符串,如果它存在则处理'+',并且当它不存在时忽略?

1 个答案:

答案 0 :(得分:0)

我只看到这些选项:

  1. 创建自己的DecimalFormat版本 DecimalFormatSymbols类为解析添加加号;也许命名为ExtendedDecimalFormat和ExtendedDecimalFormatSymbols或其他一些。将一个PlusSign定义添加到ExtendedDecimalFormatSymbols(getter,setter,serialization,blah)。如果你这样做,请把它放在git上并使其成为开源(所以其他人不必重复工作)。

  2. 在将行传递给csv解析器之前,请删除任何加号。