我想知道是否有任何groovy方法来检查字符串的子串是否与模式匹配.
例如,我有字符串List(或数组):
def Errors = ['File xyz cannot be created: No space left on device', 'File kjh has errors: some_error']
然后我有字符串列表,例如 def Patterns = ['Tests failed', 'No space left on device', 'Something goes wrong', ...some strings... ]
我想检查List的某些元素是否是元素的Patterns子串 Errors.
在那个例子中它应该返回true,因为Patternshas No space left on device和Errorshas 'File xyz cannot be created: No space left on device'.
我知道如何通过使用两个for循环和方法来编写非常有用且无效的contains但是我知道Groovy有更强大的内置方法.我试过了findAll(),但它根本没用.
你有什么想法?有没有办法让它更聪明?
明确命名pattern和error:
patterns.find { pattern -> errors.find { error -> error.contains(pattern) } } // -> No space left on device
patterns.any { pattern -> errors.find { error -> error.contains(pattern) } } // -> true
Run Code Online (Sandbox Code Playgroud)
取决于您想找到什么/有多少。
或者甚至更短:
patterns.find { errors.find { error -> error.contains(it) } }
patterns.any { errors.find { error -> error.contains(it) } }
Run Code Online (Sandbox Code Playgroud)