Java字符串操作:基于模式从字符串中提取整数和浮点
我有以下两种可能的字符串内容。 显然,金额总是不同的,我想提取关键信息和Java字符串操作:基于模式从字符串中提取整数和浮点,java,regex,string,floating-point,integer,Java,Regex,String,Floating Point,Integer,我有以下两种可能的字符串内容。 显然,金额总是不同的,我想提取关键信息和 Case 0: pricesString = "" Case 1: pricesString = "$0.023" Case 2: pricesString = "10+: $1.46 100+: $0.16 500+: $0.04" 在案例0中我不想做任何事情 在案例1中,我想执行以下操作: article.addPrice(1, 0.023); article.addPrice(10, 1.46); a
Case 0: pricesString = ""
Case 1: pricesString = "$0.023"
Case 2: pricesString = "10+: $1.46 100+: $0.16 500+: $0.04"
在案例0中
我不想做任何事情
在案例1中,我想执行以下操作:
article.addPrice(1, 0.023);
article.addPrice(10, 1.46);
article.addPrice(100, 0.16);
article.addPrice(500, 0.04);
在案例2中
我想执行:
article.addPrice(1, 0.023);
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()
检查在这三种情况中进行选择。上面的代码是最后一个案例的代码。剩下的是eaiser尽可能经常地应用正则表达式\d+\?\d*
。可以检查结果数组是否包含0、1或更多值
如果有0,则为情况0
如果有,则为案例1。你可以在文章中添加数量1
如果有更多,您可以使用以下内容循环
for(int i = 0; i < result.length / 2; i++) {
articles.addArticle(Integer.parseInt(result[i]), Double.parseDouble(result[i+1]));
}
for(int i=0;i