我正在使用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]
答案 0 :(得分:1)
这里有多个问题:
""不是预期的焦点:它应该是"。" :
你将不得不转换"," 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]", "")