In Java wie wollen Sie Titel Case einen String, während einige gebräuchliche Abkürzungen bewahren

StackOverflow https://stackoverflow.com/questions/1654066

  •  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.

War es hilfreich?

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.

scroll top