0

各単語の最初の文字を大文字にし、残りの文字を小文字にしたいです。次のコードは、元の文字列と同じように出力されます。どうすればこれを機能させることができますか?

def name = "hello world grails"

        println  name.split(" +").each{
             it[0]?.toUpperCase()+it[1..-1]?.toLowerCase()
        }
4

3 に答える 3

1

capitalize()1.7.3 リリースで Groovy に追加されたメソッドを使用できます。

def name = "hello world grails"
def splitted = name.split("\\s+").collect { it.toLowerCase().capitalize() }
println splitted

文字列が必要な場合:

println splitted.inject('') { accumulator, current -> accumulator + current + ' ' }.trim()

コードにも問題があります。を使用.each {...}すると、結果のリストの要素が「変換」されません。

def list = ["Asdf", "XCVB"]
def ret = list.each { return it.toLowerCase() }
println ret == list // true
ret = list.collect { return it.toLowerCase() }
println ret == list // false
于 2013-05-27T16:23:56.057 に答える
1

これであなたの仕事は完了です:

 ​def name = "hello world grails"

 def newName = ""
 name.split(" ").each { word ->
    newName += word[0].toUpperCase() + word[1..(word.size()-1)].toLowerCase()+" "
 }

 println newName​
于 2013-05-27T16:22:31.603 に答える