stringutils org example deletewhitespace countmatches commons string grails groovy gdk

org - Groovy equivalente GDK de Apache Commons StringUtils.capitalize(str) o Perl''s ucfirst(str)



stringutils java import (6)

Sí / no-pregunta: ¿Hay una función Groovy GDK para capitalizar el primer carácter de una cadena?

Estoy buscando un equivalente Groovy de Perl''s ucfirst (..) o Apache Commons StringUtils.capitalize (str) (este último escribe en mayúscula la primera letra de todas las palabras en la cadena de entrada).

Actualmente estoy codificando esto a mano usando ...

str = str[0].toUpperCase() + str[1 .. str.size() - 1]

... que funciona, pero supongo que hay una forma más maravillosa de hacerlo. Imagino que ucfirst (..) es una operación más común que decir center (..) que es un método estándar en Groovy GDK (ver http://groovy.codehaus.org/groovy-jdk/java/lang/ String.html ).


No conozco ninguno de estos métodos, pero una solución alternativa es usar directamente la biblioteca de Apache Commons en su código de Groovy:

import org.apache.commons.lang.StringUtils def str = StringUtils.capitalize(input)

Hace que tu código Groovy sea un poco Java-ish (a algunos no les guste) pero cumple su función.

IMO, la gran ventaja de Groovy es que puedes aprovechar fácilmente todas las bibliotecas Java que normalmente usas con una base de código Java más tradicional.


No, nada construido directamente en el lenguaje.

Sin embargo, hay un par de formas más geniales para hacer lo que estás preguntando (si no quieres usar StringUtils en la forma idiomática de Java como sugiere Vladimir).

Puedes simplificar tu método usando un valor negativo en la segunda mitad de tu rango:

def str = "foo" assert "Foo" == str[0].toUpperCase() + str[1..-1]

O puede usar una importación estática para que se vea como un método nativo:

import static org.apache.commons.lang.StringUtils.* assert "Foo" == capitalize("foo")

También puede modificar el metaClass para que tenga todos los métodos de StringUtils, así que parece un método GDK:

import org.apache.commons.lang.StringUtils String.metaClass.mixin StringUtils assert "Foo" == "foo".capitalize()


Para que esté disponible globalmente en su aplicación, solo inicie este bloque al inicio

String.metaClass.capitalize = {delegate [0] .toUpperCase () + delegate [1 ..- 1]}


Si desea dar un paso más y capitalizar cada palabra, puede usar algo como esto:

def words = sentence.split(" ") def newStr = [] words.each { w -> def capW = [w[0].toUpperCase()] if (w.length() > 1) { capW << w[1..-1].toLowerCase() } newStr << capW.join() } return newStr.join('' '')


A partir de Groovy 1.8.2 (publicado en septiembre de 2011), capitalize() es una mejora CharSequence a CharSequence que String implementa.

def str = "hello world" str = str.capitalize() assert "Hello world" == str


Bueno, puedes probar esto:

"hey this is a string".split('' '').collect{it.capitalize()}.join('' '')

o puede ser esto:

char c = '' '' "hey this is a string".collect{ c = c=='' ''?it.capitalize():it }.join()