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

我有一个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?

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

 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

尽可能多地应用正则表达式\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])); }