Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java字符串操作:基于模式从字符串中提取整数和浮点_Java_Regex_String_Floating Point_Integer - Fatal编程技术网

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