touppercase que programa primera palabra minúsculas minusculas metodo mayúsculas mayusculas mayuscula letra leer intercalar convierta convertir como caracter cada java string

java - que - Insertar espacio después de mayúscula



primera letra de cada palabra en mayuscula c++ (5)

Pseudocódigo

String source = ...; String result = ""; // FIXME: check for enf-of-source for each letter in source { while current letter not uppercase { push the letter to result; advance one letter; } if not the first letter { push space to result; } push the letter to result; }

Cómo convertir "HelloWorld" en "Hello World" . La división debe realizarse en base a las letras mayúsculas, pero debe excluir la primera letra.

PD : Soy consciente de usar String.split y luego combinarlo. Solo quería saber si hay una mejor manera.


Si no desea utilizar expresiones regulares, puede recorrer los caracteres de la cadena, agregarlos a un constructor de cadenas (y agregar un espacio al generador de cadenas si se encuentra con una letra mayúscula que no es la primera):

String s = "HelloWorld"; StringBuilder result = new StringBuilder(); for(int i=0 ; i<s.length() ; i++) { char c = s.charAt(i); if(i!=0&&Character.isUpperCase(c)) { result.append('' ''); } result.append(c); }


Mejor es subjetivo. Esto toma algunas líneas más de código:

public static String deCamelCasealize(String camelCasedString) { if (camelCasedString == null || camelCasedString.isEmpty()) return camelCasedString; StringBuilder result = new StringBuilder(); result.append(camelCasedString.charAt(0)); for (int i = 1; i < camelCasedString.length(); i++) { if (Character.isUpperCase(camelCasedString.charAt(i))) result.append(" "); result.append(camelCasedString.charAt(i)); } return result.toString(); }

Oculte esta implementación fea en una clase de utilidad y utilícela como una API (se ve bien desde la perspectiva del usuario;))


String s = "HelloWorldNishant"; StringBuilder out = new StringBuilder(s); Pattern p = Pattern.compile("[A-Z]"); Matcher m = p.matcher(s); int extraFeed = 0; while(m.find()){ if(m.start()!=0){ out = out.insert(m.start()+extraFeed, " "); extraFeed++; } } System.out.println(out);

huellas dactilares

Hola mundo nishant


String output = input.replaceAll("(//p{Ll})(//p{Lu})","$1 $2");

Esta expresión regular busca una letra minúscula seguida de una letra mayúscula y la reemplaza con la primera, un espacio y la última (separándolas efectivamente con un espacio). Pone a cada uno de ellos en un grupo de captura () para poder reutilizar los valores en la cadena de reemplazo a través de referencias anteriores ( $1 y $2 ).

Para buscar letras mayúsculas y minúsculas usa /p{Ll} y /p{Lu} (en lugar de [az] y [AZ] ), porque maneja todas las letras mayúsculas y minúsculas en el estándar de Unicode y no solo las en el rango ASCII ( esta buena explicación de Unicode en regexes se aplica principalmente a Java también).