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
и 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
Просто измените prefix
в соответствии со своими потребностями.Обратите внимание, что это регулярное выражение, поэтому вы должны избежать его.
EDIT : я сделал ошибку.На самом деле есть встроенный метод Java для декапитализации, поэтому вы можете использовать его:
def convertName(String fullName) {
java.beans.Introspector.decapitalize(fullName.replaceAll(/^prefix/, ''))
}
Он работает почти так же, но использует встроенный класс Java для обработки декапитализации.Этот метод обрабатывает заглавные буквы немного по-другому , поэтому prefixUPPERCASETest
возвращает UPPERCASETest
.