Talend 将字符串转换为浮点数
Talend Convert string to Float
我正在使用 Talend 制作一个 ETL 项目。
要将我的字符串转换为 Double,我使用 Float.parseFloat(row4.Exportation2.trim())
这是它给我的错误。
这就是我的数据在导出 2 中看起来像“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]
这里有多个问题:
- 如果您想将 String 转换为 Double,您应该使用 Double.parseDouble()。
"," 不是预期的字符:它应该是 "." :
您必须将“,”字符转换为“。” char :如果您的输入来自 excel 或分隔文件,您可以在 tFileInput 组件 ("advanced separator") 的高级设置中设置此选项。否则你应该使用 yourString.replaceAll(",", "."))
字符串中有一个 non-standard space,您应该将其替换为 yourString.replaceAll(" ", ""))
为此,您可以使用 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 = 任何非 space 字符(包括字母和数字,以及标点符号等)
或者如果您想忽略除字母或数字以外的任何其他内容,您可以简单地使用:
.replaceAll("[^a-zA-Z0-9]", "")
我正在使用 Talend 制作一个 ETL 项目。 要将我的字符串转换为 Double,我使用 Float.parseFloat(row4.Exportation2.trim()) 这是它给我的错误。 这就是我的数据在导出 2 中看起来像“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]
这里有多个问题:
- 如果您想将 String 转换为 Double,您应该使用 Double.parseDouble()。
"," 不是预期的字符:它应该是 "." : 您必须将“,”字符转换为“。” char :如果您的输入来自 excel 或分隔文件,您可以在 tFileInput 组件 ("advanced separator") 的高级设置中设置此选项。否则你应该使用
yourString.replaceAll(",", "."))
字符串中有一个 non-standard space,您应该将其替换为
yourString.replaceAll(" ", ""))
为此,您可以使用 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 = 任何非 space 字符(包括字母和数字,以及标点符号等)
或者如果您想忽略除字母或数字以外的任何其他内容,您可以简单地使用:
.replaceAll("[^a-zA-Z0-9]", "")