Beispielzeichenfolgen
one thousand only
two hundred
twenty
seven
Wie ändere ich das erste Zeichen einer Zeichenfolge in Großbuchstaben und nicht die Groß- und Kleinschreibung der anderen Buchstaben?
Nach der Änderung sollte es sein:
One thousand only
Two hundred
Twenty
Seven
Hinweis: Ich möchte dazu nicht apache.commons.lang.WordUtils verwenden.
Antworten:
Wenn Sie nur den ersten Buchstaben einer Zeichenfolge mit dem Namen groß schreiben
input
und den Rest in Ruhe lassen möchten :Jetzt
output
haben Sie, was Sie wollen. Überprüfen Sie, ob Ihrinput
Zeichen mindestens ein Zeichen ist, bevor Sie dies verwenden. Andernfalls wird eine Ausnahme angezeigt.quelle
Nur ... eine Komplettlösung, ich sehe, dass sie sozusagen das kombiniert hat, was alle anderen am Ende gepostet haben = P.
quelle
return original.length() == 0 ? original : original.substring(0, 1).toUpperCase() + original.substring(1);
if length() == 0
können wir nicht sicher sagen, dass es ist""
und das zurückgeben stattoriginal
? Spart uns ein paar Zeichen in einem Einzeiler. Ich frage, weil ich der Meinung bin, dass Java eine Sprache ist, die so voll von Gotchas ist. Ich wäre ehrlich gesagt nicht überrascht, wenn es einen anderen Weg gäbe, eine Zeichenfolge mit der Länge Null zu haben.String.toUpperCase(Locale)
eine beliebige Zeichenfolge zu verwenden, da das Gebietsschema mit dem Text übereinstimmen muss. Ja, es sollte verwendet werden, aber es ist nicht immer klar, welcheLocale
verwendet werden soll ...Am einfachsten ist es,
org.apache.commons.lang.StringUtils
Klasse zu verwendenStringUtils.capitalize(Str);
quelle
capitalize
?Außerdem gibt es
org.springframework.util.StringUtils
im Frühjahr Framework :quelle
StringUtils.capitalize(str)
von apache commons-lang .
quelle
quelle
quelle
Los geht's (hoffe, das bringt dich auf die Idee):
quelle
StdIn
undStdOut
ist nicht sehr Java-y. :-)Hierfür wird lediglich ein Zeilencode benötigt. In
String A = scanner.nextLine();
diesem Fall müssen Sie dies schreiben, um die Zeichenfolge mit diesem Großbuchstaben anzuzeigen.System.out.println(A.substring(0, 1).toUpperCase() + A.substring(1));
Und jetzt ist es geschafft.
quelle
Beispiel mit der StringTokenizer-Klasse:
quelle
Lösung mit StringBuilder:
.. basierend auf vorherigen Antworten
quelle
Wenn Sie alles zusammenzählen, ist es eine gute Idee, am Anfang der Saite zusätzlichen Leerraum zu schneiden. Andernfalls versucht .substring (0,1) .toUpperCase, einen Leerraum groß zu schreiben.
quelle
Mein funktionaler Ansatz. sein capstilise erstes Zeichen im Satz nach whitescape im ganzen Absatz.
Um nur das erste Zeichen des Wortes zu kapatilisieren, entfernen Sie einfach .split ("").
quelle
Update Juli 2019
Derzeit ist die aktuellste Bibliotheksfunktion dafür enthalten
org.apache.commons.lang3.StringUtils
Wenn Sie Maven verwenden, importieren Sie die Abhängigkeit in Ihre pom.xml:
quelle
Selbst für "einfachen" Code würde ich Bibliotheken verwenden. Es geht nicht um den Code an sich, sondern um die bereits vorhandenen Testfälle, die Ausnahmefälle abdecken. Dies können
null
leere Zeichenfolgen sein, Zeichenfolgen in anderen Sprachen.Der Wortmanipulationsteil wurde aus Apache Commons Lang entfernt. Es ist jetzt in Apache Commons Text platziert . Erhalten Sie es über https://search.maven.org/artifact/org.apache.commons/commons-text .
Sie können WordUtils.capitalize (String str) aus Apache Commons Text verwenden. Es ist mächtiger als Sie verlangt haben. Es kann auch Fulle groß schreiben (z
"oNe tousand only"
. B. Fixieren ).Da es mit vollständigem Text funktioniert, muss man ihm sagen, dass nur das erste Wort groß geschrieben werden soll.
Vollständige JUnit-Klasse, um das Spielen mit der Funktionalität zu ermöglichen:
quelle
Wenn Sie nur den ersten Buchstaben groß schreiben möchten, kann der folgende Code verwendet werden
quelle
Tatsächlich erzielen Sie die beste Leistung, wenn Sie den
+
Bediener meiden undconcat()
in diesem Fall verwenden. Dies ist die beste Option zum Zusammenführen von nur 2 Zeichenfolgen (für viele Zeichenfolgen jedoch nicht so gut). In diesem Fall würde der Code folgendermaßen aussehen:quelle
Benutze das:
quelle
Angesichts der
input
Zeichenfolge:quelle
Sie können den folgenden Code ausprobieren:
quelle
quelle
Ich möchte der akzeptierten Antwort eine NULL-Prüfung und eine IndexOutOfBoundsException hinzufügen.
Java Code:
Ausgabe:
quelle
Im Folgenden erhalten Sie unabhängig vom Wert Ihres inputString dieselbe konsistente Ausgabe:
quelle
1. Verwenden der String-
substring()
MethodeRufen Sie jetzt einfach die
capitalize()
Methode auf, um den ersten Buchstaben einer Zeichenfolge in Großbuchstaben umzuwandeln:2. Apache Commons Lang
Die
StringUtils
Klasse von Commons Lang bietet diecapitalize()
Methode, die auch für diesen Zweck verwendet werden kann:Fügen Sie Ihrer
pom.xml
Datei die folgende Abhängigkeit hinzu (nur für Maven):In diesem Artikel werden diese beiden Ansätze ausführlich erläutert.
quelle
quelle