0

我正在开发一个执行 ping 请求(通过 android shell)的 android 应用程序,我从控制台读取了显示的消息。一个典型的消息如下

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=46 time=186 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=46 time=209 ms

--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 186.127/197.891/209.656/11.772 ms

我将上述消息存储在一个字符串中。我想提取时间值,例如 186 和 209 以及损失百分比,0(在这种情况下)。

我正在考虑遍历字符串并查看“time =”之后的值。但是我不知道该怎么做。如何操作我拥有的字符串以提取值?

4

1 回答 1

1

首先获取字符串的每一行:

String[] lines = pingResult.split("\n");

然后,循环并使用子字符串。

for (String line : lines) {
    if (!line.contains("time=")) continue;
    // Find the index of "time="
    int index = line.indexOf("time=");

    String time = line.substring(index + "time=".length());
    // do what you will
}

如果要解析为int,还可以执行以下操作:

int millis = Integer.parseInt(time.replaceAll("[^0-9]", ""));

这将删除所有非数字字符

您可以对百分比执行类似的操作:

for (String line : lines) {
    if (!line.contains("%")) continue;

    // Find the index of "received, "
    int index1 = line.indexOf("received, ");

    // Find the index of "%"
    int index2 = line.indexOf("%");

    String percent = line.substring(index1 + "received, ".length(), index2);
    // do what you will
}
于 2013-05-16T00:10:12.933 回答