为什么ordinalIndexOf()不能在groovy中工作?

时间:2018-01-05 14:05:19

标签: groovy

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()

2 个答案:

答案 0 :(得分:1)

String没有方法ordinalIndexOf,Groovy也没有添加错误消息告诉您的方法。

此方法存在于StringUtilscommons-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)