例如groovy将getSomeProperty()
方法转换为someProperty
。
我的字符串需要相同的内容。 prefixMyString
已转换为myString
。
有没有标准的方法呢?
答案 0 :(得分:1)
Groovy实际上并未将getSomeProperty()
转换为someProperty
。它只会转换为另一种方式,将someProperty
转换为getSomeProperty()
它使用capitalize(String property)
上的org.codehaus.groovy.runtime.MetaClassHelper
方法执行此操作。您可以在控制台中运行它以查看它是否有效:
org.codehaus.groovy.runtime.MetaClassHelper.capitalize('fredFlinstone')
// outputs 'FredFlintstone'
完整转化,包括添加set
,get
或is
,可在课程groovy.lang.MetaProperty
下的getGetterName
课程中找到,{ {1}}。
要转换另一种方式,您必须编写自己的代码。但是,这相对简单:
getSetterName
只需更改def convertName(String fullName) {
def out = fullName.replaceAll(/^prefix/, '')
out[0].toLowerCase() + out[1..-1]
}
println convertName('prefixMyString') // outputs: myString
println convertName('prefixMyOTHERString') // outputs: myOTHERString
即可满足您的需求。请注意,它是一个正则表达式,所以你必须逃避它。
编辑:我犯了一个错误。实际上有一个内置的Java方法来进行decapitalize,所以你可以使用它:
prefix
它的工作方式几乎相同,但使用内置的Java类来处理decapitalization。此方法handles uppercase characters a little differently,以便def convertName(String fullName) {
java.beans.Introspector.decapitalize(fullName.replaceAll(/^prefix/, ''))
}
返回prefixUPPERCASETest
。