Java String Manipulation:根据模式从字符串中提取整数和浮点数

时间:2011-07-24 14:37:00

标签: java regex string floating-point integer

我有两个可能的String内容。 显然,金额总是不同的,我想提取关键信息和

Case 0:   pricesString = ""
Case 1:   pricesString = "$0.023"
Case 2:   pricesString = "10+: $1.46 100+: $0.16 500+: $0.04"

Case 0我想什么都不做。

Case 1我想表演:

article.addPrice(1, 0.023);

Case 2我想表演:

article.addPrice(10, 1.46);
article.addPrice(100, 0.16);
article.addPrice(500, 0.04);

如何提取此信息,以便我可以使用包含的浮点数和整数值调用article.addPrice?

2 个答案:

答案 0 :(得分:5)

这看起来像正则表达式的工作:

String pricesString = "10+: $1.46 100+: $0.16 500+: $0.04";
Pattern p = Pattern.compile("(\\d+)\\+: \\$(\\d\\.\\d\\d)");
Matcher m = p.matcher(pricesString);
while (m.find()) {
    Intger.parseInt(m.group(1));
    Double.parseDouble(m.group(2));
}

您可以通过简单的.length()检查在3种情况中进行选择。上面的代码适用于最后一种情况。其余的是eaiser

答案 1 :(得分:0)

尽可能多地应用正则表达式\d+\.?\d*。可以检查结果数组是否包含0,1个或更多值。

如果有0,则为Case 0

如果有,则为Case 1。你可以用文章的第1个编辑它。

如果还有更多,你可以循环使用类似

的东西
for(int i = 0; i < result.length / 2; i++) {
    articles.addArticle(Integer.parseInt(result[i]), Double.parseDouble(result[i+1]));
}