Java 如何从正则表达式中提取值并打印它们,以及如何对这些值进行计算
我有一个字符串Java 如何从正则表达式中提取值并打印它们,以及如何对这些值进行计算,java,regex,Java,Regex,我有一个字符串“规范文件:15个通过,5个失败,总共20个(100%完成),在00:08:53” 我需要使用正则表达式并打印以下内容: Passed: 15 Failed: 5 Total: 20 还需要计算并打印通过率。请帮忙 我正在使用以下代码: String line = "Spec Files: 15 passed, 5 failed, 20 total (100% completed) in 00:08:53"; Pattern p = Pattern.compile("(\
“规范文件:15个通过,5个失败,总共20个(100%完成),在00:08:53”
我需要使用正则表达式并打印以下内容:
Passed: 15
Failed: 5
Total: 20
还需要计算并打印通过率。请帮忙
我正在使用以下代码:
String line = "Spec Files: 15 passed, 5 failed, 20 total (100% completed) in 00:08:53";
Pattern p = Pattern.compile("(\\d+)\\s+");
Matcher m = p.matcher(line);
while(m.find()) {
System.out.println(m.group());
}
您需要一个正则表达式来捕获所需的两个元素:文本和值,然后按良好顺序打印它们:
String line = "Spec Files: 15 passed, 5 failed, 20 total (100% completed) in 00:08:53";
Pattern p = Pattern.compile("(\\d+)\\s+(\\w+)");
Matcher m = p.matcher(line);
while (m.find()) {
System.out.println(m.group(2) + ": " + m.group(1));
}
/*
passed: 15
failed: 5
total: 20
- 大写不是一个内置函数,因此您可以查看
通过%:
Map<String, Integer> map = new HashMap<>();
while (m.find()) {
System.out.println(m.group(2) + ": " + m.group(1));
map.put(m.group(2), Integer.parseInt(m.group(1)));
}
double passPercentage = map.get("passed") / (double) map.get("total");
System.out.println(passPercentage);
你的代码没有计算任何东西。让我们看看你的尝试。所以这不是为我的站点编写的代码。Pattern p=Pattern.compile(“(\\d+)\\s+(\\d{6})”;匹配器m=p.匹配器(线);而(m.find()){System.out.println(m.group());}进行了可更改并能够打印。不知道如何计算通过率。@arzo谢谢。如果我想使用这些值计算通过率,有没有函数可以这样做?@afser如果答案符合您的问题,您现在可以考虑投票/接受答案;)
int passed = 0, total = 0;
while (m.find()) {
System.out.println(m.group(2) + ": " + m.group(1));
if (m.group(2).equals("passed")) {
passed += Integer.parseInt(m.group(1));
} else if (m.group(2).equals("total")) {
total += Integer.parseInt(m.group(1));
}
}
double passPercentage = passed / (double) total;
System.out.println(passPercentage);