如何从JAVA中的字符串中拆分十进制数

时间:2012-04-03 10:51:19

标签: java

我想知道从字符串中分割十进制数的正则表达式

str = "COD Amount = 333.98"

在上面的字符串值中我只需要十进制值,即333.98

1 个答案:

答案 0 :(得分:4)

使用正则表达式是强制性的吗?如果不是,那么您可以使用:

public class Split {
public static void main(String[] args) {
    String line = "COD Amount = 333.98";
    String[] array = line.split("=");
    double amount = Double.parseDouble(array[1]);
    System.out.println(amount);
}
}

希望它有所帮助。

修改

使用正则表达式:

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Split {
public static void main(String[] args) {
    String line = "COD Amount = 333.98";
    Pattern p = Pattern.compile(".+= (\\d+\\.\\d+)");
    Matcher m = p.matcher(line);
    if (m.find()) {
        System.out.println(m.group(1));
    }
}
}

但要确保所有字符串格式相同:[code] [description] = [number]

(我仍然认为第一种解决方案最合适)

编辑2

由于你的输入是这样的: "COD Amount = 333.98, Coverage = $564.000"(您应该在原始问题中向我们提供整行的格式)

您可以结合以前的两个解决方案:

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Split {
public static void main(String[] args) {
    String line = "COD Amount = 333.98, Coverage = $564.000";
    String[] array = line.split(",");

    for (int i = 0; i < array.length; i++) {
        Pattern p = Pattern.compile(".+= \\$?(\\d+\\.\\d+)");
        Matcher m = p.matcher(array[i]);
        if (m.find()) {
            System.out.println(m.group(1));
        }
    }
}

}