3

当前,我正在使用以下代码在映射中创建过滤器以匹配并提供过滤后的结果集列表。

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

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

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

4

1 回答 1

11

利用

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

而是作为谓词。请参阅核心 JavaPatternPredicates.contains.

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

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

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

于 2013-05-15T08:52:56.337 回答