我有两个可能的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?
答案 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]));
}