2010-03-03 6 views
57

Je souhaite convertir le premier caractère d'une chaîne en majuscules et le reste des caractères en minuscules. Comment puis-je le faire?Conversion en majuscules et minuscules dans Java

Exemple:

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

Répondre

89

Essayez ceci sur la taille:

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(); 
} 

Il gère essentiellement des cas particuliers de vide et la chaîne d'un premier caractère et correctement les cas d'une chaîne de deux caractères, plus autrement. Et, comme indiqué dans un commentaire, le cas particulier d'un caractère n'est pas nécessaire pour la fonctionnalité, mais je préfère toujours être explicite, surtout si cela entraîne moins d'appels inutiles, comme la sous-chaîne pour obtenir une chaîne vide, le boîtier inférieur il, puis en l'ajoutant aussi bien.

+0

Ceci a un cas non nécessaire. Vois ma réponse. –

+1

@espertus, vous devriez poster votre réponse * avant * demander aux gens de la regarder, sinon vous risquez de les rendre fous :-) – paxdiablo

+0

Désolé, @paxdiablo. Merci pour le smiley. :-) –

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

Changerait "DGCGBR" à "DGCGBR"

+7

Ne pas oublier de traiter si inputval est 0 ou 1 longueur. –

-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

Je considère cela plus simple que toute autre réponse correcte. Je vais aussi javadoc. :-)

/** 
* 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(); 
} 

cordes de longueur 1 ne sont pas nécessaires pour être traité comme un cas particulier parce que s.substring(1) renvoie la chaîne vide lorsque s a une longueur 1.

+1

La version de Paxdiablo évite les concaténations inutiles quand la longueur est de 1. Cette version a moins de lignes de code, mais on peut se demander si elle est "plus simple". En général, plus concis n'implique pas plus lisible. Performance ... difficulté à dire, pas moins parce que cela dépend de la probabilité de chaînes à un caractère. –

+0

@StephenC Assez juste. –

+0

Pourtant, il * est * utile néanmoins ... – paxdiablo

8
String a = "ABCD" 

utilisant ce

a.toLowerCase(); 

toutes les lettres convertiront en simple, "abcd"
utilisant ceci

a.toUpperCase() 

toutes les lettres seront converties en capital, "ABCD"

cette Conver première lettre au capital:

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

cette Conver autre lettre simple

a.substring(1).toLowerCase(); 

nous pouvons obtenir la somme de ces deux

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

résultat = "ABCD"

Questions connexes