web-dev-qa-db-fra.com

Conversion d'un caractère en majuscule

String lower = Name.toLowerCase();
int a = Name.indexOf(" ",0);
String first = lower.substring(0, a);
String last = lower.substring(a+1);
char f = first.charAt(0);
char l = last.charAt(0);
System.out.println(l);

comment puis-je convertir les variables F et L en majuscules?.

67
shep

Vous pouvez utiliser Character#toUpperCase() pour cela.

char fUpper = Character.toUpperCase(f);
char lUpper = Character.toUpperCase(l);

Il a cependant quelques limitations car le monde sait qu'il y a beaucoup plus de caractères que la gamme 16 bits char ne peut en contenir. Voir aussi l'extrait suivant du javadoc :

Remarque: Cette méthode ne peut pas gérer caractères supplémentaires . Pour prendre en charge tous les caractères Unicode, y compris les caractères supplémentaires, utilisez la méthode toUpperCase(int)

130
BalusC

Au lieu d'utiliser les utilitaires existants, vous pouvez essayer ci-dessous la conversion en utilisant une opération booléenne:

En majuscule:

 char upperChar = 'l' & 0x5f

En minuscule:

   char lowerChar = 'L' ^ 0x20

Comment ça marche:

Tableau binaire, hexadécimal et décimal:

------------------------------------------
| Binary   |   Hexadecimal     | Decimal |
-----------------------------------------
| 1011111  |    0x5f           |  95     |
------------------------------------------
| 100000   |    0x20           |  32     |
------------------------------------------

Prenons un exemple de petite conversion l en L:

L'opération binaire ET: (l & 0x5f)

Le caractère l aASCII108 et 01101100 est une représentation binaire. 

   1101100
&  1011111
-----------
   1001100 = 76 in decimal which is **ASCII** code of L

De même, la conversion de L à l:  

L'opération binaire XOR: (L ^ 0x20)

   1001100
^  0100000
-----------
   1101100 = 108 in decimal which is **ASCII** code of l
21
Rahul Sharma

Jetez un œil à la classe Java.lang.Character, elle fournit de nombreuses méthodes utiles pour convertir ou tester des caractères.

17
Andreas_D
f = Character.toUpperCase(f);
l = Character.toUpperCase(l);
13
DaveJohnston
System.out.println(first.substring(0,1).toUpperCase()); 
System.out.println(last.substring(0,1).toUpperCase());
4
Likhith Kumar

Si vous intégrez Apache commons lang jar dans votre projet, la solution la plus simple consiste à:

WordUtils.capitalize(Name)

prend en charge tout le sale boulot pour vous ... Voir le javadoc ici

Alternativement, vous avez également une méthode capitalizeFully (String) qui minimise également le reste des caractères.

2
Asaf

Vous pouvez appliquer le .toUpperCase () directement aux variables String ou en tant qu'attribut aux champs de texte. Ex: - 

String str;
TextView txt;

str.toUpperCase();// will change it to all upper case OR
txt.append(str.toUpperCase());
txt.setText(str.toUpperCase());
2
امون بسام

Puisque vous savez que les caractères sont en minuscule, vous pouvez soustraire la valeur ASCII correspondante pour les mettre en majuscule:

char a = 'a';
a -= 32;
System.out.println("a is " + a); //a is A

Voici un tableau ASCII pour référence

1
Burrito

Je pense que vous essayez de mettre en majuscule le premier et le dernier caractère de chaque mot d'une phrase avec l'espace comme délimiteur.

Peut être fait via StringBuffer:

public static String toFirstLastCharUpperAll(String string){
    StringBuffer sb=new StringBuffer(string);
        for(int i=0;i<sb.length();i++)
            if(i==0 || sb.charAt(i-1)==' ' //for first character of string/each Word
                || i==sb.length()-1 || sb.charAt(i+1)==' ') //for last character of string/each Word
                sb.setCharAt(i, Character.toUpperCase(sb.charAt(i)));
     return sb.toString();
}
0
Praveen