java - 可以将 Matcher.group(n) 与 Java 中的 String 进行比较吗?

标签 java matcher string-comparison

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

相关文章:

Java URL 连接 javax.net.ssl.SSLHandShakeException

Java 匹配器模式问题

java - 在文本文件上多次匹配模式?

java - 比较java android中的字符串

java - setPriority() 方法不能正常工作

java - JComboBox 不能很好地与 GroupLayout 配合使用

从 Ant 启动 tomcat 7 时出现 java.lang.NoClassDefFoundError

javascript - 如何在全局范围内向 Jasmine 添加自定义匹配器?

java - Java中的compareTo()函数

php - 字符串比较的行为不同