gpt4 book ai didi

java - 从字符串中的金额中提取数字

转载 作者:太空宇宙 更新时间:2023-11-04 06:59:25 25 4
gpt4 key购买 nike

我有以下方法,用于从字符串中提取金额。

strAmountString =“24 个月 272.94 美元/月 常规价格 - 336.9 美元”

public static String fnAmountFromString(String strAmountString) {
String strOutput = "";

Pattern pat = Pattern.compile("\\$(-?\\d+.\\d+)?.*");
Matcher mat = pat.matcher(strAmountString);

while(mat.find())
strOutput = mat.group(1);

return strOutput;
}

现在我必须从字符串中提取字符串272.94,上面的函数工作正常。

但是当我必须从字符串 strAmountString = "272.94" 中提取 272.94 时,给我一个 null。

此外,我还必须从 string strAmountString = "$272.94/mo for 24 Month Regular Price -$336.9"中提取金额 -336.9

最佳答案

尝试使用 272.94 时出现的第一个问题与正则表达式的要求有关,事实上,String 需要由 $ 开头

您可以将 $ 作为可选组的一部分,例如 ((\\$)?\\d+.\\d+),它将匹配 272.94$272.94,但不会直接匹配 -$336.9,但它会匹配 $336.9

因此,在您的示例中,您可以使用 ((-)?(\\$)?\\d+.\\d+) ,它现在也将匹配 -$336.9...

就我个人而言,我可能会使用 ((-)?(\\$)?(-)?\\d+.\\d+),它将匹配 -$336.9$-336.9-336.9336.9

下一步将尝试从结果中删除 $,是的,您可以尝试使用其他正则表达式,但说实话,String#replaceAll 会更容易...

注意-我的正则表达式知识非常基础,所以可能有更简单的解决方案

已更新示例

String value = "$272.94/mo for 24 months Regular Price -$336.9";
String regExp = "((-)?(\\$)?(-)?\\d+.\\d+)";

Pattern p = Pattern.compile(regExp);
Matcher matcher = p.matcher(value);
while (matcher.find()) {
System.out.println(matcher.group());
}

哪个输出...

$272.94
-$336.9

关于java - 从字符串中的金额中提取数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22314225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com