这里是例子,
`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的位置不是静态的?
提前谢谢!
答案 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)
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