¿Existe una función integrada en Java que capitaliza el primer carácter de cada palabra en una cadena y no afecta a las demás?
Ejemplos:
jon skeet
->Jon Skeet
miles o'Brien
->Miles O'Brien
(B sigue siendo capital, esto descarta el caso del título)old mcdonald
->Old Mcdonald
*
* (también Old McDonald
sería encontrar, pero no espero que sea TAN inteligente).
Un vistazo rápido a la documentación de cadenas de Java solo revela toUpperCase()
y toLowerCase()
, por supuesto, no proporciona el comportamiento deseado. Naturalmente, los resultados de Google están dominados por esas dos funciones. Parece una rueda que ya debe haberse inventado, por lo que no estaría de más preguntar para poder usarla en el futuro.
old mcdonald
? ¿Debería ser esoOld McDonald
?Respuestas:
WordUtils.capitalize(str)
(de apache commons-text )(Nota: si necesita
"fOO BAr"
convertirse"Foo Bar"
, usecapitalizeFully(..)
en su lugar)fuente
WordUtils.capitalizeFully(str)
es la solución.Si solo le preocupa que la primera letra de la primera palabra esté en mayúscula:
fuente
line
ser nulo o tener una longitud de <2.El siguiente método convierte todas las letras en mayúsculas / minúsculas, dependiendo de su posición cerca de un espacio u otros caracteres especiales.
fuente
if(Character.isLetter(chars[i])) { if(!found) { chars[i] = Character.toUpperCase(chars[i]); } found = true; } else { found = false; }
.found
apreviousCharIsLetter
.Prueba esta manera muy simple
ejemplo givenString = "ram es buen chico"
La salida será: Ram Is Good Boy
fuente
He escrito una pequeña clase para capitalizar todas las palabras en una cadena.
Opcional
multiple delimiters
, cada uno con su comportamiento (capitalizar antes, después o ambos, para manejar casos comoO'Brian
);Opcional
Locale
;No rompas con
Surrogate Pairs
.DEMO EN VIVO
Salida:
Nota: la primera letra siempre estará en mayúscula (edite la fuente si no lo desea).
Comparta sus comentarios y ayúdeme a encontrar errores o mejorar el código ...
Código:
fuente
fuente
Hice una solución en Java 8 que en mi humilde opinión es más legible.
La esencia de esta solución se puede encontrar aquí: https://gist.github.com/Hylke1982/166a792313c5e2df9d31
fuente
El uso lo
org.apache.commons.lang.StringUtils
hace muy simple.fuente
StringUtils.capitalise(str)
está en desuso. Ver: commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/…Con este simple código :
Resultado: Hola
fuente
Estoy usando la siguiente función. Creo que es más rápido en rendimiento.
fuente
Desde Java 9+
puedes usar
String::replaceAll
así:Ejemplo:
Salidas
fuente
Use el método Split para dividir su cadena en palabras, luego use las funciones de cadena incorporadas para capitalizar cada palabra, luego agregue juntas.
Pseudocódigo (ish)
Al final, la cadena se parece a "La oración a la que desea aplicar mayúsculas"
fuente
Esto puede ser útil si necesita capitalizar títulos. Capitaliza cada subcadena delimitada por
" "
, excepto las cadenas especificadas como"a"
o"the"
. No lo he ejecutado todavía porque es tarde, aunque debería estar bien. Utiliza Apache CommonsStringUtils.join()
en un punto. Puede sustituirlo con un bucle simple si lo desea.fuente
fuente
fuente
Decidí agregar una solución más para poner en mayúscula las palabras en una cadena:
Función:
Llamada de ejemplo:
Resultado:
fuente
Utilizar:
fuente
Hay muchas maneras de convertir la primera letra de la primera palabra en mayúscula. Tengo una idea. Es muy simple:
fuente
fuente
Aquí hay una función simple
fuente
Esta es solo otra forma de hacerlo:
fuente
Método reutilizable para intiCap:
fuente
Aquí está mi solución.
Me encontré con este problema esta noche y decidí buscarlo. Encontré una respuesta de Neelam Singh que casi estaba allí, así que decidí solucionar el problema (se rompió en cadenas vacías) y causé un bloqueo del sistema.
El método que está buscando se nombra a
capString(String s)
continuación. Convierte "Son solo las 5 am aquí" en "Son solo las 5 am aquí".El código está bastante bien comentado, así que disfrútalo.
fuente
1. Java 8 Streams
Ejemplos:
Para
foo bAR
queFoo Bar
, reemplace elmap()
método con la siguiente:2.
String.replaceAll()
(Java 9+)Ejemplos:
3. Texto de Apache Commons
Por titulo:
Para más detalles, consulte este tutorial .
fuente
Para aquellos de ustedes que usan Velocity en su MVC, pueden usar el
capitalizeFirstLetter()
método de la clase StringUtils .fuente
fuente
fuente
Si prefieres guayaba ...
fuente
fuente
La forma corta y precisa es la siguiente:
Funciona sin error si intenta cambiar el valor del nombre a los tres valores. Sin errores
fuente