我想在一行中将每个单词的第一个字符设为大写,将剩余字符设为小写。以下代码打印与原始字符串相同。怎样才能使它起作用?
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()
}
这将完成您的工作:
def name = "hello world grails"
def newName = ""
name.split(" ").each { word ->
newName += word[0].toUpperCase() + word[1..(word.size()-1)].toLowerCase()+" "
}
println newName
您可以使用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 requiredString = org.apache.commons.lang.WordUtils.capitalizeFully('i AM gRooT') // yields 'I Am Groot'
您需要包含 Apache Commons Lang 作为依赖项。