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

时间:2013-05-15 08:49:35

标签: guava

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

final Map filteredMap = Maps.filterKeys(mymap, Predicates.containsPattern("^Xyz"));

然而,Guava Predicates.containsPattern会进行区分大小写的匹配。

我应该如何使用containsPattern进行大小写不敏感的匹配。

1 个答案:

答案 0 :(得分:11)

使用

Predicates.contains(Pattern.compile("^Xyz", Pattern.CASE_INSENSITIVE))

作为谓词。请参阅核心Java PatternPredicates.contains

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

Predicates.containsPattern("(?i)^Xyz"))

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