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

问题描述 投票:0回答:1

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

str = "COD Amount = 333.98"

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

333.98

java
1个回答
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));
    }
}
}

但请确保所有字符串都采用相同的格式:[代码] [描述] = [数字]

(我还是觉得第一种方案最合适)

编辑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));
        }
    }
}

}

© www.soinside.com 2019 - 2024. All rights reserved.