从java中的字符串中提取mac地址

时间:2019-02-20 06:00:32

标签: java

这里是例子,
`string test =“ link / ether 00:0c:29:d1:86:4e brd ff:ff:ff:ff:ff:ff”;

00:0c:29:d1:86:4e是MacAddress。 我应该如何提取MacAddress并且MacAddress的位置不是静态的?

提前谢谢!

5 个答案:

答案 0 :(得分:2)

String test = "  link/ether 00:0c:29:d1:86:4e brd ff:ff:ff:ff:ff:ff";
String[] tokenizeString = (test.trim()).split(" ");
System.out.println(tokenizeString[1]); //From question you are intrested on this stuff only

我认为这将解决您的问题!!!

答案 1 :(得分:1)

  1. 使用String.trim 删除字符串开头和结尾的多余空格
  2. 使用String.split 根据定界符剪切字符串。这是空格字符
  3. 打印第二个项目(index 1)以获取您的Mac地址

public static void main(String[] args) {
    String test = "  link/ether 00:0c:29:d1:86:4e brd ff:ff:ff:ff:ff:ff";
    String mac = test.trim().split(" ")[1];
    System.out.println(mac);
}

答案 2 :(得分:0)

最简单的方法是:

String test = " link/ether 00:0c:29:d1:86:4e brd ff:ff:ff:ff:ff:ff";
String mac = test.substring(13, 30);

但这要求测试字符串始终具有相同的模式。

答案 3 :(得分:0)

这将处理mac地址周围的任意数量的字符:

String test = "  link/ether 00:0c:29:d1:86:4e brd ff:ff:ff:ff:ff:ff";
String mac = null;
Matcher m = Pattern.compile("((\\w{2}:){5}\\w{2})").matcher(test);
if (m.find()) {
    mac = m.group();
}
System.out.println(mac);

输出

00:0c:29:d1:86:4e
如果要排除其余字母和下划线,可以用\\w替换

[a-fA-F0-9]

答案 4 :(得分:0)

通过使用类提供的内部方法,可以最好地解决字符串操作或任何其他数据结构,如其他答案所述。我通常使用的顺序:

第一种方法
trim():修剪尾部和前导空格以清理字符串
split():使用给定的分隔符分割字符串,在这种情况下,该分隔符为空格字符。 ASCII码32.

第二种方法
Java Util软件包提供了一些可供您探索的选项。
java.util:类-StringTokenizer
java.util.regex:类-模式和匹配器
给定您的问题背景和范围,您可以选择其中一个来提出解决方案。尽管这些课程需要一些最佳实践来配合使用,但您可以在此处查找或在其他简短答案中找到它们。

第三种方法
使用第三方库来解决您的问题。使用TPL时必须格外小心,例如主动使用,社区,测试,许可等。Apache和Google在数据结构和域方面处于领先地位,可以使用的此类库之一是Apache Commons Lang