我正在尝试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
}
需要一些提示和指导,感谢先进的^^“
答案 0 :(得分:1)
您只想捕获毫秒数。如果在regexp中有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) ...
通过这种方式,如果您需要,可以在以后更改它,而无需在代码中随处搜索。
答案 1 :(得分:0)
您可以在字符串上使用compare
方法:
if (m.group(0).compare("time=66ms") >= 0)
// do something
} else {
//do something
}
但是,if
分支中不需要else
。
答案 2 :(得分:0)
数据采用已知格式:“时间”后跟“=”后跟“数字”后跟“ms”
试试这个: