1
我正在編寫一個Java控制檯程序,它查找給定的mac地址供應商。字符串拆分MAC地址
使用「ARP -a」通過運行時我收到一個字符串,如:
"172.17.7.144 44-94-fc-68-b7-03 dynamic"
我有困難分割字符串只是檢索MAC地址,IP地址和MAC之間的間距根據長度而變化,所以通過空格分割似乎不起作用。
從這樣的字符串中檢索數據的最佳方法是什麼?
我正在編寫一個Java控制檯程序,它查找給定的mac地址供應商。字符串拆分MAC地址
使用「ARP -a」通過運行時我收到一個字符串,如:
"172.17.7.144 44-94-fc-68-b7-03 dynamic"
我有困難分割字符串只是檢索MAC地址,IP地址和MAC之間的間距根據長度而變化,所以通過空格分割似乎不起作用。
從這樣的字符串中檢索數據的最佳方法是什麼?
像@Andrea提意見,你可以很容易地使用:
String str = "172.17.7.144 44-94-fc-68-b7-03 dynamic";
String[] spl = str.split("\\s+");
輸出
172.17.7.144
44-94-fc-68-b7-03
dynamic
另一種解決辦法,如果你想獲得唯一的MAC地址可以使用的模式(看看模式What is a regular expression for a MAC Address?)像這樣:
Pattern pat = Pattern.compile("([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})");
Matcher mat = pat.matcher(str);
while (mat.find()) {
System.out.println(mat.group());
}
爲什麼'replaceAll()'的開銷?爲什麼不只是'.split(「\\ s +」)'?對不起,但這只是一個非常糟糕的例子,以錯誤的方式引導人們,所以向下投票。 – Andreas
謝謝@Andreas我已經編輯它 –
但我不知道爲什麼這個倒票,這是一個正確的解決方案,爲什麼你倒投它@Andreas?並不是所有的人都像你一樣好,所以請一個有用的評論更好 –