2017-06-03 84 views
1

我正在編寫一個Java控制檯程序,它查找給定的mac地址供應商。字符串拆分MAC地址

使用「ARP -a」通過運行時我收到一個字符串,如:

"172.17.7.144   44-94-fc-68-b7-03  dynamic" 

我有困難分割字符串只是檢索MAC地址,IP地址和MAC之間的間距根據長度而變化,所以通過空格分割似乎不起作用。

從這樣的字符串中檢索數據的最佳方法是什麼?

回答

3

像@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()); 
} 
+1

爲什麼'replaceAll()'的開銷?爲什麼不只是'.split(「\\ s +」)'?對不起,但這只是一個非常糟糕的例子,以錯誤的方式引導人們,所以向下投票。 – Andreas

+0

謝謝@Andreas我已經編輯它 –

+1

但我不知道爲什麼這個倒票,這是一個正確的解決方案,爲什麼你倒投它@Andreas?並不是所有的人都像你一樣好,所以請一個有用的評論更好 –