当前我正在使用以下代码片段在地图中创建一个过滤器,以匹配并提供结果集的过滤列表。
final Map filteredMap = Maps.filterKeys(mymap, Predicates.containsPattern("^Xyz"));
然而,Guava Predicates.containsPattern会进行区分大小写的匹配。
我应该如何使用containsPattern进行大小写不敏感的匹配。
答案 0 :(得分:11)
使用
Predicates.contains(Pattern.compile("^Xyz", Pattern.CASE_INSENSITIVE))
作为谓词。请参阅核心Java Pattern
和Predicates.contains
。
编辑(OP评论后):是的,你可以写:
Predicates.containsPattern("(?i)^Xyz"))
(参见Pattern的文档:也可以通过嵌入式标志表达式(?i)启用不区分大小写的匹配。)但它的IMO不太自我解释,加上编译的Pattern
来自第一个示例可以在循环中使用时缓存到某个私有静态最终常量,这可以提高性能。