0

我有以下字符串:

“ISL-1027

20:13:02:22:00:76"

即蓝牙名称和MAC地址

我需要一个单独的字符串上的 MAC 地址。在这种情况下使用 split() 的最佳方法是什么?

谢谢

4

3 回答 3

3

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]);
于 2013-09-17T17:04:31.290 回答
0

取决于您的字符串的格式不确定,但定义了 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;
}

这应该始终有效。

于 2013-09-17T17:23:41.367 回答
0

在任何空白处拆分匹配并包括DOTALL模式开关:

split("(?s)\\s+");

尽管存在换行符,但 DOTALL 将使正则表达式工作。

于 2013-09-17T17:08:15.313 回答