Groovy中判断字符串数组是否存在匹配正则元素的更简洁写法是什么?
Groovy 风格优化实现方案
Groovy 针对集合操作提供了大量内置便捷方法,你的需求可以直接使用any()方法实现,代码会大幅精简,可读性也更高:
def randomItemList = ['red apple', 'dog', 'cat'] def isApplePresent = randomItemList.any { it ==~ /.*apple.*/ } println(isApplePresent) // 输出 true
优化点说明
- 直接调用集合的
any()方法,只要有一个元素满足闭包内的判断条件就会立即返回true,底层默认提前终止遍历,和你原本的break逻辑完全一致,性能没有差异 - 用Groovy原生的斜杠字符串
/正则内容/书写正则表达式,不需要额外转义特殊字符,比双引号字符串更适配正则场景 - 用闭包隐式参数
it代替手动下标遍历,省去循环变量声明、边界判断等冗余代码 - 如果需要多次复用正则规则,可以提前声明为Pattern类型,复用性更高:
// 提前声明正则,可多处复用 def applePattern = ~/.*apple.*/ def isApplePresent = randomItemList.any { it ==~ applePattern }
如果需要判断全部元素匹配、或者查找所有符合条件的元素,还可以替换为every()、findAll()等内置集合方法,都是Groovy生态下的惯用写法。
内容的提问来源于stack exchange,提问作者JustCurious
相关产品推荐
相关产品推荐

