我尝试在拆分字符串上调用方法“findResults”,但出现编译错误。分割字符串会返回一个字符串数组,我认为它会被视为 Groovy 中的集合。其他 Collection 方法确实适用于字符串数组,所以我的问题是:我遇到了错误吗?
def names = "john paul pete"
assert names.split().findResults{if (it.startsWith("p")) return it.capitalize()}.join(" ") == "Paul Pete"
结果: groovy.lang.MissingMethodException:没有方法签名:[Ljava.lang.String;.findResults() 适用于参数类型:(gard_split_check$_run_closure2) 值:[gard_split_check$_run_closure2@722b302]
注意我知道我可以通过将上面代码中的 split() 替换为 tokenize() ,或者将 split() 方法的结果转换为列表来获得正确的结果。
最佳答案
正如 groovydoc 中所述,split
将返回一个字符串数组,它没有很多常规增强功能。 tokenize
返回一个列表而不是数组:
def names = "john paul pete"
assert names.tokenize().findResults {
if (it.startsWith("p")) it.capitalize()
}.join(" ") == "Paul Pete"
关于groovy - Groovy 中的 findResults 方法似乎不适用于字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15999035/