0

我正在尝试 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
       }

需要一些提示和指导,谢谢先进^^"

4

3 回答 3

1

您只需要捕获毫秒数。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,只需 anelse就可以了。如果 int is not >= 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) ...

这样,如果您需要,以后可以很容易地更改它,而无需在任何地方搜索您的代码。

于 2013-03-08T19:08:52.707 回答
0

您可以compare在字符串上使用该方法:

if (m.group(0).compare("time=66ms") >= 0)
  // do something
} else {
  //do something
}

不过,您不需要ifelse分支中。

于 2013-03-08T19:01:35.787 回答
0

数据采用已知格式:“时间”后跟“=”后跟“数字”后跟“毫秒”

试试这个:

  1. 解析字符串以找到毫秒值。执行此操作的一个正则表达式是“time=\d.ms”
  2. 将毫秒值转换为数字。考虑这样的事情:Integer.valueOf(blam)。
  3. 将 ping 的数值毫秒与某个阈值进行比较。
于 2013-03-08T19:03:00.760 回答