Konvertieren eines Zeichens in Großbuchstaben

Lesezeit: 4 Minuten

Benutzer-Avatar
Schaf

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 umwandeln lassen?

  • Welchen Teil der Antworten auf Ihre vorherige Frage haben Sie nicht verstanden? Meine Antwort dort enthält eine Antwort auf diese Frage.

    – Bozo

    12. September 2010 um 20:24 Uhr


  • @shep – Können Sie die Antwort von BalusC akzeptieren? Es wird zukünftigen Suchenden helfen.

    – Charles Allen

    9. Oktober 2017 um 2:19 Uhr

Benutzer-Avatar
BalusC

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

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

Es hat jedoch einige Einschränkungen, da die Welt viel mehr Zeichen kennt, als jemals in 16bit passen char Angebot. Siehe auch den folgenden Auszug aus der javadoc:

Hinweis: Diese Methode kann nicht verarbeiten ergänzende Zeichen. Um alle Unicode-Zeichen, einschließlich ergänzender Zeichen, zu unterstützen, verwenden Sie die toUpperCase(int) Methode.

Benutzer-Avatar
Raul Sharma

Anstatt vorhandene Dienstprogramme zu verwenden, können Sie die folgende Konvertierung mit boolescher Operation versuchen:

In 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 klein l zu L Wandlung:

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

l Charakter hat ASCII 108 und 01101100 ist eine binäre Darstellung.

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

Ebenso die L zu l Wandlung:

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

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

  • Ich bin ehrlich schockiert, dass dies 7 Stimmen hat. Obwohl ich den cleveren Ansatz begrüße, führt Cleverness selten zu wartbarem Code, insbesondere wenn er anstelle einer integrierten Methode wie verwendet wird Character.toUpperCase(). Alle Benutzer sollten verstehen, dass es nichts Nicht-ASCII verarbeitet.

    – Adam Hewitt

    6. September 2017 um 15:52 Uhr

  • @AdamHewitt Dieser Ansatz funktioniert auch mit Nicht-ASCII-Zeichen, z. B. ‘250’, jedoch würden einige Nicht-ASCII-Zeichen nicht die erwarteten Ergebnisse liefern. Ihr Punkt ist richtig, dass Benutzer die richtige Verwendung dieses Ansatzes verstehen sollten und er hauptsächlich verwendet werden sollte für englische Alphabete.

    – Rahul Sharma

    6. September 2017 um 17:37 Uhr

  • Ich denke, es sollte sein c | 0x20 Anstatt von c ^ 0x20 für Kleinbuchstaben. Andernfalls, wenn das Zeichen bereits Kleinbuchstaben ist, wird Ihr Code es in Großbuchstaben umwandeln

    – Steven Yue

    16. Februar 2018 um 1:52 Uhr

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

  • +1 Ich mag die Antworten, die dem Benutzer einen Hinweis geben, um nach der Antwort zu suchen

    – Anthony Forloney

    12. September 2010 um 20:24 Uhr

  • -1, wenn wir ein Dragnet für Studenten verwenden, entfernen wir einen der SO-Hauptvorteile. Verbringen Sie nicht übermäßig viel Zeit damit, verschachtelten Verweisen von Personen über defekte Links zu folgen.

    – ebt

    18. Januar 2014 um 16:48 Uhr

f = Character.toUpperCase(f);
l = Character.toUpperCase(l);

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

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

Hier ist ein ASCII-Tabelle als Referenz

  • Dies funktioniert nur, wenn der String ausschließlich aus ASCII-Zeichen besteht. Sprachen wie Französisch, Griechisch, Spanisch, Türkisch usw. haben Nicht-ASCII-Zeichen mit Groß-/Kleinschreibung. Dieser Ansatz würde in diesen Fällen nicht funktionieren …

    – Mike Laren

    8. Februar 2015 um 3:08 Uhr


  • Eigentlich dieser grundlegende Ansatz tut Arbeit für die gängigsten Nicht-ASCII-Zeichen in Französisch, Spanisch, Deutsch … zB é à ö û ñ … Wenn der OP also weiß, dass er nur mit solchen Zeichen umgehen muss, kann er der Einfachheit und Leistung halber bei dieser Methode bleiben.

    – Sebastian

    13. Oktober 2015 um 13:18 Uhr


  • Berechnungen mit Zeichen durchzuführen, um die Groß-/Kleinschreibung zu ändern, ist eine der schlimmsten Angewohnheiten, also nicht im 21. Jahrhundert! Es gibt mehr als ASCII-Zeichen!

    – Floyd

    17. Dezember 2015 um 8:49 Uhr

Benutzer-Avatar
FelixSFD

System.out.println(first.substring(0,1).toUpperCase()); 
System.out.println(last.substring(0,1).toUpperCase());

  • Dies funktioniert nur, wenn der String ausschließlich aus ASCII-Zeichen besteht. Sprachen wie Französisch, Griechisch, Spanisch, Türkisch usw. haben Nicht-ASCII-Zeichen mit Groß-/Kleinschreibung. Dieser Ansatz würde in diesen Fällen nicht funktionieren …

    – Mike Laren

    8. Februar 2015 um 3:08 Uhr


  • Eigentlich dieser grundlegende Ansatz tut Arbeit für die gängigsten Nicht-ASCII-Zeichen in Französisch, Spanisch, Deutsch … zB é à ö û ñ … Wenn der OP also weiß, dass er nur mit solchen Zeichen umgehen muss, kann er der Einfachheit und Leistung halber bei dieser Methode bleiben.

    – Sebastian

    13. Oktober 2015 um 13:18 Uhr


  • Berechnungen mit Zeichen durchzuführen, um die Groß-/Kleinschreibung zu ändern, ist eine der schlimmsten Angewohnheiten, also nicht im 21. Jahrhundert! Es gibt mehr als ASCII-Zeichen!

    – Floyd

    17. Dezember 2015 um 8:49 Uhr

Wenn Sie das Apache Commons Lang Jar in Ihr Projekt aufnehmen, wäre die einfachste Lösung:

WordUtils.capitalize(Name)

nimmt Ihnen die Drecksarbeit ab. Siehe javadoc hier

Alternativ haben Sie auch eine Methode capitalizeFully(String), die auch den Rest der Zeichen klein schreibt.

  • Das Verknüpfung Sie lieferten einen 404-Fehler!!!! kannst du es korrigieren??

    – Visruth

    5. Juli 2013 um 10:50 Uhr

1226520cookie-checkKonvertieren eines Zeichens in Großbuchstaben

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy