2012-02-22 63 views

回答

1

Groovy實際上並沒有將getSomeProperty()轉換爲someProperty。它只轉換其他方式,將someProperty轉換爲getSomeProperty()

它通過org.codehaus.groovy.runtime.MetaClassHelper上的capitalize(String property)方法執行此操作。下的方法getGetterNamegetSetterName

org.codehaus.groovy.runtime.MetaClassHelper.capitalize('fredFlinstone') 
// outputs 'FredFlintstone' 

完全轉化,包括添加setget,或is,可以在類groovy.lang.MetaProperty發現,:您可以在控制檯中運行這個,看看它的工作。

要轉換另一種方式,您必須編寫自己的代碼。然而,這相對簡單:

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滿足您的需求。請注意,這是一個正則表達式,所以你必須逃避它。


編輯:我犯了一個錯誤。這裏實際上是一個內置的Java方法開頭字母爲小寫,所以你可以使用這個:

def convertName(String fullName) { 
    java.beans.Introspector.decapitalize(fullName.replaceAll(/^prefix/, '')) 
} 

它的工作原理幾乎相同,但使用內置的Java類用於處理資本化。此方法handles uppercase characters a little differently,以便prefixUPPERCASETest返回UPPERCASETest

相關問題