Gibt es eine in Java integrierte Funktion, die das erste Zeichen jedes Wortes in einem String großschreibt und die anderen nicht beeinflusst?
Beispiele:
jon skeet
->Jon Skeet
miles o'Brien
->Miles O'Brien
(B bleibt Kapital, dies schließt Titelfall aus)old mcdonald
->Old Mcdonald
*
* ( Old McDonald
wäre auch zu finden, aber ich erwarte nicht, dass es so klug ist.)
Ein kurzer Blick auf die Java-String-Dokumentation zeigt nur toUpperCase()
und toLowerCase()
, die natürlich nicht das gewünschte Verhalten bieten. Natürlich werden die Google-Ergebnisse von diesen beiden Funktionen dominiert. Es scheint wie ein Rad, das bereits erfunden worden sein muss, also kann es nicht schaden zu fragen, damit ich es in Zukunft verwenden kann.
old mcdonald
? Sollte das werdenOld McDonald
?Antworten:
WordUtils.capitalize(str)
(aus Apache Commons-Text )(Hinweis: Wenn Sie benötigen
"fOO BAr"
werden"Foo Bar"
, dann verwenden SiecapitalizeFully(..)
stattdessen)quelle
WordUtils.capitalizeFully(str)
ist die Lösung.Wenn Sie sich nur Sorgen machen, dass der erste Buchstabe des ersten Wortes groß geschrieben wird:
quelle
line
, Sie sind null oder haben eine Länge von <2.Die folgende Methode konvertiert alle Buchstaben in Groß- / Kleinbuchstaben, abhängig von ihrer Position in der Nähe eines Leerzeichens oder anderen Sonderzeichen.
quelle
if(Character.isLetter(chars[i])) { if(!found) { chars[i] = Character.toUpperCase(chars[i]); } found = true; } else { found = false; }
.found
zupreviousCharIsLetter
.Versuchen Sie es auf sehr einfache Weise
Beispiel angegebenString = "RAM ist ein guter Junge"
Ausgabe wird sein: Ram ist guter Junge
quelle
Ich habe eine kleine Klasse geschrieben, um alle Wörter in einem String groß zu schreiben.
Optional
multiple delimiters
, jeder mit seinem Verhalten (vor, nach oder beiden groß schreiben, um Fälle wie zu behandelnO'Brian
);Optional
Locale
;Brich nicht mit
Surrogate Pairs
.LIVE DEMO
Ausgabe:
Hinweis: Der erste Buchstabe wird immer groß geschrieben (bearbeiten Sie die Quelle, wenn Sie das nicht möchten).
Bitte teilen Sie Ihre Kommentare und helfen Sie mir, Fehler zu finden oder den Code zu verbessern ...
Code:
quelle
quelle
Ich habe eine Lösung in Java 8 gemacht, die meiner Meinung nach besser lesbar ist.
Das Wesentliche für diese Lösung finden Sie hier: https://gist.github.com/Hylke1982/166a792313c5e2df9d31
quelle
Die Verwendung
org.apache.commons.lang.StringUtils
macht es sehr einfach.quelle
StringUtils.capitalise(str)
ist veraltet. Siehe: commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/…Mit diesem einfachen Code :
Ergebnis: Hallo
quelle
Ich benutze die folgende Funktion. Ich denke, es ist schneller in der Leistung.
quelle
Ab Java 9+
Sie können
String::replaceAll
wie folgt verwenden:Beispiel:
Ausgänge
quelle
Verwenden Sie die Split-Methode, um Ihre Zeichenfolge in Wörter aufzuteilen. Verwenden Sie dann die integrierten Zeichenfolgenfunktionen, um jedes Wort in Großbuchstaben zu schreiben, und fügen Sie sie dann zusammen.
Pseudocode (ish)
Am Ende sieht die Zeichenfolge ungefähr so aus wie "Der Satz, auf den Sie Großbuchstaben anwenden möchten".
quelle
Dies kann nützlich sein, wenn Sie Titel groß schreiben müssen. Es wird jede durch begrenzte
" "
Teilzeichenfolge groß geschrieben , mit Ausnahme bestimmter Zeichenfolgen wie"a"
oder"the"
. Ich habe es noch nicht ausgeführt, weil es spät ist, sollte aber in Ordnung sein. Verwendet Apache CommonsStringUtils.join()
an einem Punkt. Sie können es durch eine einfache Schleife ersetzen, wenn Sie möchten.quelle
quelle
quelle
Ich habe beschlossen, eine weitere Lösung zum Großschreiben von Wörtern in einer Zeichenfolge hinzuzufügen:
Funktion:
Beispielaufruf:
Ergebnis:
quelle
Verwenden:
quelle
Es gibt viele Möglichkeiten, den ersten Buchstaben des ersten großgeschriebenen Wortes umzuwandeln. Ich habe eine Idee. Es ist sehr einfach:
quelle
quelle
Hier ist eine einfache Funktion
quelle
Dies ist nur eine andere Möglichkeit:
quelle
Wiederverwendbare Methode für intiCap:
quelle
Hier ist meine Lösung.
Ich bin heute Abend auf dieses Problem gestoßen und habe beschlossen, es zu durchsuchen. Ich fand eine Antwort von Neelam Singh, die fast da war, also entschied ich mich, das Problem zu beheben (brach auf leeren Zeichenfolgen) und verursachte einen Systemabsturz.
Die Methode, nach der Sie suchen, ist
capString(String s)
unten aufgeführt. Es verwandelt "Es ist nur 5 Uhr morgens hier" in "Es ist nur 5 Uhr morgens hier".Der Code ist ziemlich gut kommentiert, also viel Spaß.
quelle
1. Java 8 Streams
Beispiele:
Für
foo bAR
zuFoo Bar
, ersetzen Sie diemap()
Methode mit dem folgenden:2.
String.replaceAll()
(Java 9+)Beispiele:
3. Apache Commons Text
Für den Titelfall:
Weitere Informationen finden Sie in diesem Tutorial .
quelle
Für diejenigen unter Ihnen, die Velocity in Ihrer MVC verwenden, können Sie die
capitalizeFirstLetter()
Methode aus der StringUtils-Klasse verwenden .quelle
quelle
quelle
Wenn Sie Guave bevorzugen ...
quelle
quelle
Der kurze und präzise Weg ist wie folgt:
Es funktioniert ohne Fehler, wenn Sie versuchen, den Namenswert in die drei Werte zu ändern. Fehlerfrei.
quelle