我对Android编程很陌生,而且我对Java / Android编程没有经验。我想创建一个应用程序,它会ping用户输入的地址。
所以我找到了一个退出的好脚本,它对地址执行ICMP Ping请求并返回命令行的输出。 (实际上它只是Ping命令,它在一个进程中运行):
public String ping(String url){
int count = 0;
String str = "";
try {
Process process = Runtime.getRuntime().exec(
"/system/bin/ping -c 1 " + url);
BufferedReader reader = new BufferedReader(new InputStreamReader(
process.getInputStream()));
int i;
char[] buffer = new char[4096];
StringBuffer output = new StringBuffer();
while ((i = reader.read(buffer)) > 0)
output.append(buffer, 0, i);
reader.close();
//int time = Integer.parseInt(output[10])
// body.append(output.toString()+"\n");
str = output.toString();
str = str.substring(str.indexOf("time="), str.indexOf("ms"));
//str = output.toString();
// Log.d(TAG, str);
} catch (IOException e) {
// body.append("Error\n");
e.printStackTrace();
}
return str;
}
输出:
time = 43
但是,我并不真正理解这里所做的一切,因为它是来自互联网的脚本。因为我只是对响应时间感兴趣,所以我想解析它并将其转换为整数。
在我看来,有两种可能性
我从来没有和那种东西一起工作,所以我想问你们,如果你能帮助我的话。 :)
答案 0 :(得分:4)
您可以通过以下几种方式实现:
str = str.substring(str.indexOf("=") + 1, str.indexOf("ms")).trim();
int result = Integer.valueOf(str);
str = str.replace("time=", "").replace("ms", "").trim();
int result = Integer.valueOf(str);
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(output.toString());
matcher.find();
String result = matcher.group();
int result = Integer.valueOf(str);
str = str.replaceAll("\\D+","");