【问题标题】:Android Bluetooth ScanFilter Partial String MatchingAndroid 蓝牙 ScanFilter 部分字符串匹配
【发布时间】:2016-02-10 17:48:24
【问题描述】:

我希望使用 ScanFilter 来搜索一组蓝牙设备。我知道所有这些设备的地址都以 00:A0:50 开头,然后最后 6 位数字不同,所以所有地址看起来都像 00:A0:50:XX:XX:XX。我正在寻找一种方法来使用setDeviceAddress 来查找地址以这 6 位数字开头的设备。这需要一个字符串作为输入。相关代码如下。

ScanFilter cypressFilter = new ScanFilter().Builder()
    //we know that their mac address will always start with 00:A0:50
    //so we should filter out any devices without that
    .setDeviceAddress(/* Address string goes here */)
    .build();

我想我需要为此使用正则表达式之类的东西,但我对 Java、Android 和正则表达式还很陌生,我不确定是否可以将正则表达式传递给这个函数?查看文档,我想我需要一个 Pattern 或 Matcher 类来查找相关的字符串。但是,我不确定这是否适用于需要特定字符串作为输入的特定方法。我很惊讶它没有将数组作为输入,我认为这将是一个比单个 MAC 地址更常见的用例。

【问题讨论】:

  • 那么,您正在寻找匹配00:A0:50:XX:XX:XX 的正则表达式,或者您想问是否可以使用正则表达式完成?
  • 我稍微编辑了我的问题。我主要是问是否可以使用正则表达式来完成,以及如何构建。如果有人也提供了特定的正则表达式来做这件事,那就太好了,但知道是否/如何实现这一点并不重要。

标签: java android regex bluetooth android-bluetooth


【解决方案1】:

是的,您可以使用 regexPattern

使用regex匹配字符串地址

00:A0:50:([A-Fa-f0-9]{2}:){2}[A-Fa-f0-9]

见演示DEMO

我很惊讶它没有将数组作为输入,我认为 将是比单个 MAC 地址更常见的用例。

现在您可以使用循环(即 for ,while.. 等)并匹配地址

【讨论】:

  • 在测试演示后,我认为它需要在末尾添加一个 {2} 来捕获最后 2 位数字,而不仅仅是最后一位。否则,那就太好了。我将研究模式类。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
  • 1970-01-01
  • 2019-10-18
  • 2017-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多