webentwicklung-frage-antwort-db.com.de

Umwandlung eines Zeichens in Großbuchstaben

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

wie würde ich die F- und L-Variablen in Großbuchstaben konvertieren?.

67
shep

Sie können hierfür Character#toUpperCase() verwenden.

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

Es gibt jedoch einige Einschränkungen, da der Welt viel mehr Zeichen bekannt sind, als jemals in den 16-Bit-Bereich char passen können. Siehe auch den folgenden Auszug aus javadoc :

Hinweis: Diese Methode kann zusätzliche Zeichen nicht verarbeiten. Verwenden Sie die Methode toUpperCase(int) , um alle Unicode-Zeichen einschließlich zusätzlicher Zeichen zu unterstützen.

135
BalusC

Anstelle der Verwendung vorhandener Dienstprogramme können Sie die Konvertierung mit der booleschen Operation unten ausführen:

Zum Großbuchstaben:

 char upperChar = 'l' & 0x5f

Kleinschreibung:

   char lowerChar = 'L' ^ 0x20

Wie es funktioniert:

Binär-, Hex- und Dezimaltabelle:

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

Nehmen wir ein Beispiel für eine kleine Konvertierung von l in L:

Die binäre UND-Verknüpfung: (l & 0x5f)

Das l-Zeichen hatASCII108 und 01101100 ist eine binäre Darstellung. 

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

Ebenso die Umwandlung von L in l:  

Die binäre XOR -Operation: (L ^ 0x20)

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

Schauen Sie sich die Klasse Java.lang.Character an. Sie bietet viele nützliche Methoden zum Konvertieren oder Testen von Zeichen.

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

Wenn Sie den Apache commons lang jar in Ihr Projekt aufnehmen, wäre die einfachste Lösung:

WordUtils.capitalize(Name)

kümmert sich um all die Drecksarbeit für Sie . Siehe Javadoc hier

Alternativ haben Sie auch eine CapitalizeFully (String) -Methode, die auch die restlichen Zeichen in Kleinbuchstaben schreibt.

2
Asaf

Sie können .toUpperCase () direkt auf String-Variablen oder als Attribut auf Textfelder anwenden. Ex: - 

String str;
TextView txt;

str.toUpperCase();// will change it to all upper case OR
txt.append(str.toUpperCase());
txt.setText(str.toUpperCase());
2

Da Sie wissen, dass die Zeichen Kleinbuchstaben sind, können Sie den entsprechenden Wert ASCII subtrahieren, um sie in Großbuchstaben zu setzen:

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

Hier ist eine ASCII - Tabelle als Referenz

1
Burrito

Ich denke, Sie versuchen, den ersten und letzten Buchstaben jedes Wortes in einem Satz mit Leerzeichen als Trennzeichen zu verwenden.

Kann durch StringBuffer gemacht werden:

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