Есть ли стандартный метод для обработки верблюжьей струны в Groovy? - PullRequest
0 голосов
/ 22 февраля 2012

Например, groovy преобразует метод getSomeProperty() в someProperty.

Мне нужно то же самое для моей строки.prefixMyString конвертируется в myString.Есть ли стандартный способ сделать это?

1 Ответ

1 голос
/ 22 февраля 2012

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...