java - Android 蓝牙 ScanFilter 部分字符串匹配

标签 java android regex bluetooth android-bluetooth

我希望使用 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 地址更常见的用例。

最佳答案

是的,您可以使用regex & Pattern

使用下面的regex来匹配字符串地址

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

查看演示 DEMO

I'm surprised it doesn't take an array as input, I would think that would be a more common use case than a single MAC address.

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

关于java - Android 蓝牙 ScanFilter 部分字符串匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35322388/

相关文章:

java - 使用 JUnit 5 发现测试不会执行 LoggingListener (TestExecutionListeners 的实现)

RestTemplate 和 RetryTemplate 的 JAVA Mockito 单元测试

Android:无法解析或不是字段,可能需要帮助

PHP 预替换 : "a period with numbers on each side"

Java String.split() 分割每个字符而不是给定的正则表达式

regex - 用字符串中的单个空格替换所有双空格

java - Java中的排序列表<>

java - 在java中以正确的方式声明单例,并正确初始化私有(private)哈希表

java - Android Gridview 与 Edittext

android - Phonegap 插件 :How to convert Base64 String to a PNG image in Android