我有以下字符串:
“ISL-1027
20:13:02:22:00:76"
即蓝牙名称和MAC地址
我需要一个单独的字符串上的 MAC 地址。在这种情况下使用 split() 的最佳方法是什么?
谢谢
split("\n")
你可以用这个。"\n"
将是这里的分隔符。
String str = "ISL-1027" +
"\n" +
"20:13:02:22:00:76";
String[] arr= str.split("\n");
System.out.println("Bluetooth Name: "+arr[0]);
System.out.println("MAC address: "+arr[1]);
输出:
Bluetooth Name: ISL-1027
MAC address: 20:13:02:22:00:76
如果您的输入字符串像这样ISL-1027 20:13:02:22:00:76
(用空格分隔),请使用以下
String str = "ISL-1027 20:13:02:22:00:76";
String[] arr= str.split(" ");
System.out.println("Bluetooth Name: "+arr[0]);
System.out.println("MAC address: "+arr[1]);
取决于您的字符串的格式不确定,但定义了 MAC 地址的格式。我不会尝试拆分字符串并希望索引 n 是正确的值。相反,我会使用正则表达式来查找与 mac-address 格式匹配的字符串的正确位置。
这是一个小例子(未经测试):
String input = "ISL-1027
20:13:02:22:00:76"
Pattern macAddrPattern = Pattern.compile("[0-9a-fA-F]{2}\:[0-9a-fA-F]{2}\:[0-9a-fA-F]{2}\:[0-9a-fA-F]{2}\:[0-9a-fA-F]{2}\:[0-9a-fA-F]{2}\");
String macAdr = parseMacAddr(input);
public String parseMacAddr(String value) {
Matcher m = macAddrPattern.matcher(value);
if (m.matches()) {
return value.substring(m.start(),m.end());
}
return null;
}
这应该始终有效。