In Java wie wollen Sie Titel Case einen String, während einige gebräuchliche Abkürzungen bewahren
-
11-09-2019 - |
Frage
Es gibt viele Möglichkeiten, um Titel Case in Java .
Aber wie Sie einige der häufigsten Abkürzungen verhindern, umgewandelt wird. Zum Beispiel:
System.out.println(makeProper("JAMES A SWEET");
System.out.println(makeProper("123 MAIN ST SW");
James A Sweet
123 Main St Sw
SW sollte Groß bleiben, wie es eine Abkürzung zu South West ist.
Lösung
Sie müssen eine Art Wörterbuch, das Wörter enthält, die nicht aktiviert werden sollte. Sie könnten eine HashSet
dafür. Etwas in diese Richtung:
Set<String> whiteList = new HashSet<String>();
whiteList.add("SW");
whiteList.add("NW");
// ...
for (String word : phrase.split()) {
if (!whiteList.contains(word)) {
makeProper(word);
}
}
Andere Tipps
Es gibt keinen Standard-Weg, so etwas zu tun.
Sie mit Ihrer eigenen Methode einfiel und eine Reihe von Abkürzungen Sie „korrigiert“ nicht und schließen es aus der Transformation
Die einzige Art, wie ich sehen konnte, ist:
1. split your input text into words 2. iterate through words 2.a if word is a abbreviation then 2.a.1 do nothing or convert to uppercase, whatever is required 2.b otherwise 2.b.1 call [makeProper][1] or [capitalize][2]
makeProper oder Kapital
offensichtlich müssen Sie eine Methode erstellen, die darüber entscheidet, ob das Wort eine Abkürzung ist oder nicht :), wie über das Halten alle wissen Abkürzung in einer Datei und liest sie.