Groovy代码:
println 'hello'.indexOf ('l',1)
println 'hello'.ordinalIndexOf('l',1)
输出:
2
Caught: groovy.lang.MissingMethodException: No signature of method: java.lang.String.ordinalIndexOf() is applicable for argument types: (java.lang.String, java.lang.Integer) values: [l, 1]
我在这里缺少什么?以及如何使用ordinalIndexOf()
?
答案 0 :(得分:1)
类String
没有方法ordinalIndexOf
,Groovy也没有添加错误消息告诉您的方法。
此方法存在于StringUtils
和commons-lang
中的班级commons-lang3
。您可以使用该方法或将方法添加到String
类,例如将StringUtils
用作类别类,如
@Grab('org.apache.commons:commons-lang3:3.7')
import org.apache.commons.lang3.StringUtils
println 'hello'.indexOf('l',1)
println StringUtils.ordinalIndexOf('hello','l',1)
use (StringUtils) {
println 'hello'.ordinalIndexOf('l',1)
}
打印2
三次。
答案 1 :(得分:1)
可以向String
MetaClass添加方法:
import org.apache.commons.lang3.StringUtils
String.metaClass.ordinalIndexOf { String searchStr, int ordinal ->
StringUtils.ordinalIndexOf(delegate, searchStr, ordinal)
}
println 'hello'.ordinalIndexOf('l',1)