我正在尝试 ping 并将 ping 摘要列在 Matcher.group(0)
中。显示的 ping 摘要结果为:
Matcher.group(0)
time=35ms
time=3ms
time=2ms
time=3ms
time=2ms
time=83ms
time=3ms
time=69ms
time=2ms
time=5ms
java.io.IOException: The pipe is being closed
BUILD SUCCESSFUL (total time: 9 seconds)
我可以/如何比较这些结果?我的意思是,我可以做这样的事情:
if(m.group(0) >= "time=66ms") {
//do something
} else if (m.group(0) < "time=66ms") {
//do something
}
最佳答案
您只想捕获毫秒数。你有类似 time=\d+ms
的地方在正则表达式中,使用 time=(\d+)ms
反而。然后你可以使用matcher.group(1)
获取该字符串,然后使用 Integer.parseInt
将其作为 int 获取。
int ms = Integer.parseInt(matcher.group(1));
if (ms >= 66) {
// do something
}
else {
// do something else
}
请注意,您不需要 else if
,只是一个else
很好。如果 int 不是 >= someValue
,那么它必须是 < someValue
-- 您不需要检查代码中的同义反复。顺便说一句,我会将数字 66 放入某处的常量中:
private static final int TIMEOUT_THRESHOLD = 66; // or some better name
...
int ms = Integer.parseInt(matcher.group(1));
if (ms >= TIMEOUT_THRESHOLD) ...
这样,以后如果需要的话,就可以很容易地更改它,而无需在代码中到处搜索。
关于java - 可以将 Matcher.group(n) 与 Java 中的 String 进行比较吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15301299/