2017-06-03 6 views
1

私は、特定のMACアドレスのベンダーを検索するJavaコンソールプログラムを作成しています。MACアドレスを分割する文字列

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

私は、MACアドレス、IPアドレスとMACの間の間隔を取得するために、文字列を分割する難しさを抱えている:ランタイムを通じて「ARP -a」を使用し

私は、次のような文字列を受け取ります長さによって変化するので、スペースを介して分割することは機能していないようです。

このような文字列からデータを取得する最も良い方法は何ですか?

答えて

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

を編集していますが、なぜこれをダウン投票すればよいのでしょうか?すべての人があなたのように良いとは限りませんので、有益なコメントをお願いします。 –