2010-03-03 40 views
57

Quiero convertir el primer carácter de una cadena en mayúscula y el resto de los caracteres en minúsculas. ¿Cómo puedo hacerlo?Convertir a mayúsculas y minúsculas en Java

Ejemplo:

String inputval="ABCb" OR "a123BC_DET" or "aBcd" 
String outputval="Abcb" or "A123bc_det" or "Abcd" 

Respuesta

89

Prueba esto en el tamaño:

String properCase (String inputVal) { 
    // Empty strings should be returned as-is. 

    if (inputVal.length() == 0) return ""; 

    // Strings with only one character uppercased. 

    if (inputVal.length() == 1) return inputVal.toUpperCase(); 

    // Otherwise uppercase first letter, lowercase the rest. 

    return inputVal.substring(0,1).toUpperCase() 
     + inputVal.substring(1).toLowerCase(); 
} 

Básicamente se encarga de casos especiales de cadena vacía y de un carácter primero y correctamente los casos una cadena de dos-más-carácter de otro modo. Y, como se señala en un comentario, el caso especial de un solo carácter no es necesario para la funcionalidad, pero aún así prefiero ser explícito, especialmente si da como resultado menos llamadas inútiles, como la subcadena para obtener una cadena vacía, carcasa inferior y luego anexarlo también.

+0

Esto tiene un caso innecesario. Ver mi respuesta –

+1

@espertus, debe publicar su respuesta * antes * pidiéndole a las personas que lo miran, de lo contrario es probable que los vuelva locos :-) – paxdiablo

+0

Lo sentimos, @paxdiablo. Gracias por el emoticono. :-) –

8
String inputval="ABCb"; 
String result = inputval.substring(0,1).toUpperCase() + inputval.substring(1).toLowerCase(); 

cambiaría "ABCB" a "Abcb"

+7

No se olvide de manejar si inputval es 0 ó 1 longitud. –

-5
/* This code is just for convert a single uppercase character to lowercase 
character & vice versa.................*/ 

/* This code is made without java library function, and also uses run time input...*/ 



import java.util.Scanner; 

class CaseConvert { 
char c; 
void input(){ 
//@SuppressWarnings("resource") //only eclipse users.. 
Scanner in =new Scanner(System.in); //for Run time input 
System.out.print("\n Enter Any Character :"); 
c=in.next().charAt(0);  // input a single character 
} 
void convert(){ 
if(c>=65 && c<=90){ 
    c=(char) (c+32); 
    System.out.print("Converted to Lowercase :"+c); 
} 
else if(c>=97&&c<=122){ 
     c=(char) (c-32); 
     System.out.print("Converted to Uppercase :"+c); 
} 
else 
    System.out.println("invalid Character Entered :" +c); 

} 


    public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    CaseConvert obj=new CaseConvert(); 
    obj.input(); 
    obj.convert(); 
    } 

} 



/*OUTPUT..Enter Any Character :A Converted to Lowercase :a 
Enter Any Character :a Converted to Uppercase :A 
Enter Any Character :+invalid Character Entered :+*/ 
2

Considero esto más simple que cualquier respuesta correcta anterior. También lanzaré en javadoc. :-), no fue necesario

/** 
* Converts the given string to title case, where the first 
* letter is capitalized and the rest of the string is in 
* lower case. 
* 
* @param s a string with unknown capitalization 
* @return a title-case version of the string 
*/ 
public static String toTitleCase(String s) 
{ 
    if (s.isEmpty()) 
    { 
     return s; 
    } 
    return s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase(); 
} 

cadenas de longitud 1 para ser tratado como un caso especial porque s.substring(1) devuelve la cadena vacía cuando s tiene longitud 1.

+1

La versión de Paxdiablo evita concatenaciones innecesarias cuando s.length es 1. Esta versión tiene menos líneas de código, pero es discutible si es "más simple". En general, más conciso no implica más legible. Rendimiento ... dificultad para decir, entre otras cosas porque depende de la probabilidad de cadenas de un carácter. –

+0

@StephenC Bastante justo. –

+0

Aún así, * es * útil, sin embargo ... – paxdiablo

8
String a = "ABCD" 

usar este

a.toLowerCase(); 

todas las letras se convertirán a simple, "abcd"
usando esto

a.toUpperCase() 

todas las letras se convertirán en capital, "ABCD"

esta conver primera letra al capital:

a.substring(0,1).toUpperCase() 

esta conver otra carta simple

a.substring(1).toLowerCase(); 

podemos obtener la suma de estos dos

a.substring(0,1).toUpperCase() + a.substring(1).toLowerCase(); 

resultado = "ABCD"

Cuestiones relacionadas