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])); }