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?.
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)
.
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
Jetez un œil à la classe Java.lang.Character
, elle fournit de nombreuses méthodes utiles pour convertir ou tester des caractères.
f = Character.toUpperCase(f);
l = Character.toUpperCase(l);
System.out.println(first.substring(0,1).toUpperCase());
System.out.println(last.substring(0,1).toUpperCase());
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.
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());
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
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();
}