将混合字符串转换为double

时间:2014-11-03 14:49:28

标签: java

如何转换此字符串:

String str = "***123.45***";

到这双:

double d = 123.45; 

当我使用valueOf

double d = Double.valueOf("***123.04***");

或parseDouble

double d = Double.parseDouble("***123.45***");

它将抛出java.lang.NumberFormatException: For input string: ""123.04"",因为该字符串不包含数字。我需要摆脱星号。

3 个答案:

答案 0 :(得分:1)

删除之前的星号

str = str.replace("*", "");

答案 1 :(得分:1)

尝试替换api以替换所有" *"在您的输入中如下:

double d = Double.valueOf("***123.04***".replace("*", ""));
System.out.println(d);

答案 2 :(得分:0)

尝试使用正则表达式匹配数字:

String s = "eXamPLestring>1.4365345>>ReSTOfString";
Pattern p = Pattern.compile("\\D*([0-9]*\\.*[0-9]*)\\D*");
Matcher m = p.matcher(s);
if (m.find()) {
    System.out.println(Double.parseDouble(m.group(1)));

}