Tengo una cadena como esta "HelloWorldMyNameIsCarl" y quiero que se convierta en algo así como "Hello_World_My_Name_Is_Carl". ¿Cómo puedo hacer esto?¿Cómo puedo agregar un guión bajo antes de cada letra mayúscula dentro de una cadena Java?
Respuesta
Sí, las expresiones regulares pueden hacer eso por usted:
"HelloWorldMyNameIsCarl".replaceAll("(.)([A-Z])", "$1_$2")
La expresión [A-Z]
coincidirá con todas las letras mayúsculas y ponerlo en el segundo grupo. Necesita el primer grupo .
para evitar reemplazar la primera 'H'.
Como Piligrim señaló, esta solución no funciona para idiomas arbitrarios. Para capturar cualquier letra mayúscula definida por el Stardard Unicode necesitamos el Unicode 4.1 subproperty\p{Lu}
que coincida con todas las letras mayúsculas. Entonces, la solución más general se ve como
"HelloWorldMyNameIsCarl".replaceAll("(.)(\\p{Lu})", "$1_$2")
Gracias Piligrim.
Pegúname a eso. No podía recordar si los reemplazos de expresiones regulares Java eran \ 1 o $ 1, así que tuve que buscarlos. –
Tenga en cuenta que esta solución (a diferencia de la dada por ChssPly76) no funciona para todas las letras mayúsculas, pero solo para las inglesas: Ä so Û so Û Û Û Û Û Û Û Û Û Û Û. – Henning
Argumentaría que su cadena de ejemplo implica inglés. –
Aquí hay una pista para hacerle pensar a lo largo de una posible solución:
- Encuentra una manera de dividir la cadena en partes en cada letra mayúscula
- Una las cuerdas divididas de nuevo con guiones entre ellos
palabras clave útiles:
- dividieron
- expresión regular/regex
Esto es una prueba viviente de cuán grande es realmente esta cita: http://stackoverflow.com/questions/58640/great-programming-quotes/58646#58646 :-) – ChssPly76
¿Qué tienes contra expresiones regulares, ChssPly76? –
String.split elimina los caracteres coincidentes (= división) y, por lo tanto, no es realmente útil aquí. – Henning
¿Es esta tarea? Para empezar:
- Crear una Iterar StringBuffer
- por encima de su cadena.
- Marque cada carácter en mayúscula (
java.lang.Character
clase ayudará) - Agregue guión bajo al búfer si es así.
- Agregue el carácter actual al búfer.
La división o la expresión regular parecen mucho más naturales. –
Incluso pidió expresiones regulares. –
+1 - Esto me parece una solución perfectamente viable (especialmente si esto es tarea). –
- 1. ¿Cómo puedo escribir en mayúscula la primera letra de cada palabra en una cadena en Perl?
- 2. Java: Separar una cadena cuando una letra mayúscula se encuentra
- 3. mayúscula la primera letra de cada palabra
- 4. Regex usando Notepad ++ para agregar espacio antes de una letra mayúscula
- 5. Poner en mayúscula la última letra de una cadena
- 6. Cómo mayúscula en la primera letra después de un guión, es decir, Adam Smith-Jones
- 7. ¿Cómo puedo verificar si una letra de una cadena está en mayúscula con Python?
- 8. Regex escribe en mayúscula la primera letra de cada palabra, también después de un carácter especial como un guión
- 9. Capitalizar/Poner en mayúscula la primera letra de cada palabra en una cadena en Matlab?
- 10. Primera letra mayúscula para EditText
- 11. Devolver todos los caracteres antes del primer guión bajo
- 12. ¿Cómo puedo garantizar que una cadena de Bash sea alfanumérica, sin un guión bajo?
- 13. ¿Cómo paso a la siguiente letra mayúscula?
- 14. ¿Cómo puedo reemplazar un espacio en una cadena con un guión bajo en C#?
- 15. Cómo comprobar si una cadena comienza con una letra mayúscula en una consulta LINQ
- 16. Convertir la primera letra en cadena en mayúscula
- 17. ¿Formato de subcadena para obtener todos los caracteres después del primer guión bajo pero antes del segundo guión bajo?
- 18. ¿Cómo hago para que la primera letra de una cadena sea mayúscula?
- 19. Cambiar la primera letra de cada línea de un archivo a mayúscula
- 20. Contando la frecuencia de cada letra en una cadena
- 21. ¿Cómo hacer la primera letra en mayúscula en un UILabel?
- 22. ¿Cómo puedo escribir en mayúscula la primera letra de una entrada?
- 23. C# - Reemplazar cada letra UpperCase con subrayado y la letra
- 24. ¿Cómo hacer para que una cadena tenga que comenzar con una letra mayúscula con JavaScript?
- 25. Convierta una cadena de entrada de usuario en mayúscula Java
- 26. ¿Cómo puedo reemplazar todas las apariciones de un dólar ($) con un guión bajo (_) en javascript?
- 27. cómo puedo obtener el texto antes y después del "-" (guión)
- 28. strftime hacer la primera letra mayúscula (mayúscula) en PHP
- 29. Reemplazar el espacio con un guión bajo
- 30. Poner en mayúscula la primera letra. MySQL
¿Dejar intencionalmente "IsCarl" o parte de lo que está intentando lograr? – Otis
Sólo un error, lo siento – w4nderlust