java.lang.NumberFormatException将字符串解析为双精度

java.lang.NumberFormatException将字符串解析为双精度,java,Java,我想不出来 double d = Double.valueOf(str); double d2 = Double.parseDouble(str); 这两种方法都会产生以下异常: java.lang.NumberFormatException:无效的双精度:‎-73.04“ 但是,以下硬编码值可以正常工作: double d=double.valueOf(“-73.04”)将此问题标题中的数字复制并粘贴到IntelliJ的双引号中后,问题就清楚了: double d = Double.pars

我想不出来

double d = Double.valueOf(str);
double d2 = Double.parseDouble(str);
这两种方法都会产生以下异常:

java.lang.NumberFormatException:无效的双精度:‎-73.04“

但是,以下硬编码值可以正常工作:


double d=double.valueOf(“-73.04”)

将此问题标题中的数字复制并粘贴到IntelliJ的双引号中后,问题就清楚了:

double d = Double.parseDouble("\u200E-73.04");

Exception in thread "main" java.lang.NumberFormatException: For input string: "?-73.04"
从硬编码的
-73.04
中复制它不具有此行为


不知怎的,你有一根绳子。在解析字符串之前,必须从字符串中删除无关的Unicode字符。

因此,问题在于字符串的内容。点和/或减号字符可能与硬编码示例中的不同。是否尝试修剪传递给这两种方法的字符串?它可能包含这些方法无法理解的额外字符,如空格或换行符和我的一样。trim也不能帮助我从xls文件中读取数据,有些数据是好的,但有些是因为某些原因导致的崩溃。字符串本身是否包含双引号,还是包含前导空格或尾随空格?