案例使用Google Guava进行不敏感过滤

Ana*_*hvi 3 guava

当前我正在使用以下代码片段来创建过滤器,在地图中匹配并提供结果集的过滤列表.

final Map filteredMap = Maps.filterKeys(mymap, Predicates.containsPattern("^Xyz"));
Run Code Online (Sandbox Code Playgroud)

但是,Guava Predicates.containsPattern会进行区分大小写的匹配.

我应该如何使用containsPattern来做case-Insensitive匹配.

Xae*_*ess 11

使用

Predicates.contains(Pattern.compile("^Xyz", Pattern.CASE_INSENSITIVE))
Run Code Online (Sandbox Code Playgroud)

作为谓词而不是.请参阅核心Java PatternPredicates.contains.

编辑(OP评论后):是的,你可以这样写:

Predicates.containsPattern("(?i)^Xyz"))
Run Code Online (Sandbox Code Playgroud)

(参见Pattern的文档:也可以通过嵌入式标志表达式(?i)启用不区分大小写的匹配.)但它的IMO不太自我解释,加上Pattern第一个示例编译时可以缓存到某些私有静态最终常量循环,可以提高性能.