Talend将字符串转换为Float

时间:2017-01-27 13:09:01

标签: converter talend

我正在使用Talend制作一个ETL项目。 要将我的字符串转换为Double,我使用Float.parseFloat(row4.Exportation2.trim()) 这是它给我的错误。 这就是我的数据在exportation2中看起来像“766,9997474”“1 345,43”的方式 有谁知道为什么?

Démarrage du job ConvertString a 14:03 27/01/2017.
Exception in component tMap_1
java.lang.NumberFormatException: For input string: "23,4897452"
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
at last.convertstring_0_1.ConvertString.tFileInputDelimited_1Process(ConvertString.java:1553)
at last.convertstring_0_1.ConvertString.runJobInTOS(ConvertString.java:2075)
at last.convertstring_0_1.ConvertString.main(ConvertString.java:1932)
[statistics] connecting to socket on port 3464
[statistics] connected
6|Royaume-Uni|BA|1971|23,4897452
[statistics] disconnected
Job ConvertString terminé à 14:03 27/01/2017. [Code sortie=1]

2 个答案:

答案 0 :(得分:1)

这里有多个问题:

  • 如果要将String转换为Double,则应使用Double.parseDouble()。
  • ""不是预期的焦点:它应该是"。" : 你将不得不转换"," char to"。" char:如果您的输入来自excel或分隔文件,则可以在tFileInput组件的高级设置上设置此选项("高级分隔符")。否则,您应该使用yourString.replaceAll(",", "."))

  • 字符串中有一个非标准空格,您应该用yourString.replaceAll(" ", ""))替换

答案 1 :(得分:-1)

要这样做,你可以在t_Map中使用这么多的功能: columnValue = columnValue.replaceAll("\\W","");

\w = Anything that is a word character \W = Anything that isn't a word character (including punctuation etc) \s = Anything that is a space character (including space, tab characters etc) `\ S =任何不是空格字符的东西(包括字母和数字,以及标点符号等)

或者如果你想忽略任何其他东西,那么你可以简单地使用一个字母或数字:

.replaceAll("[^a-zA-Z0-9]", "")