各単語の最初の文字を大文字にし、残りの文字を小文字にしたいです。次のコードは、元の文字列と同じように出力されます。どうすればこれを機能させることができますか?
def name = "hello world grails"
println name.split(" +").each{
it[0]?.toUpperCase()+it[1..-1]?.toLowerCase()
}
各単語の最初の文字を大文字にし、残りの文字を小文字にしたいです。次のコードは、元の文字列と同じように出力されます。どうすればこれを機能させることができますか?
def name = "hello world grails"
println name.split(" +").each{
it[0]?.toUpperCase()+it[1..-1]?.toLowerCase()
}
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
これであなたの仕事は完了です:
def name = "hello world grails"
def newName = ""
name.split(" ").each { word ->
newName += word[0].toUpperCase() + word[1..(word.size()-1)].toLowerCase()+" "
}
println newName