从String中提取Scientific Number而不使用Java中的字符串中的空格

时间:2015-03-12 07:48:11

标签: java regex string java.util.scanner

我需要从字符串中提取所有数字。我正在使用这个,以便我可以将科学记数法中的数字转换为十进制形式,保持字符串的其余部分完整。

示例:"距离为4.62664581051E9"变成"距离是4626645810.51"

public static void main (String[] args) throws java.lang.Exception
{
        NumberFormat fm1 = new DecimalFormat(",##0.00##");
        String str = "NetMV4.62664581051E9";
        StringBuilder parameterBuilder = new StringBuilder();
        Scanner scanner = new Scanner(str);

        while (scanner.hasNext()) {
            if (scanner.hasNextDouble() && !scanner.hasNextInt()) {
                parameterBuilder.append(fm1.format(scanner.nextDouble()));
            } else {
                parameterBuilder.append(scanner.next() + " ");
            }
        }       
        scanner.close();
        System.out.println(parameterBuilder.toString());
}

到目前为止,我使用Scanner类来提取数字。它工作正常,但对于诸如"距离= 4.62664581051E9" (没有空格)

我可以创建一个自定义解析器并解析字符串,但正在寻找更好的案例。

由于

1 个答案:

答案 0 :(得分:0)

如何使用正则表达式?如果没问题,请使用:

  

[ - +] [0-9] * [0-9] +([EE] [ - +] [0-9] +)???

这是here

的答案

测试:https://regex101.com/r/bK8iH9/1