In Java come si fa a titolo di caso una stringa pur conservando alcune abbreviazioni comuni
-
11-09-2019 - |
Domanda
Ci sono molti modi per Titolo caso in java .
Ma come si fa a prevenire alcune delle abbreviazioni più comuni di essere convertito. Per esempio:
System.out.println(makeProper("JAMES A SWEET");
System.out.println(makeProper("123 MAIN ST SW");
James A Sweet
123 Main St Sw
SW dovrebbe rimanere maiuscolo in quanto è l'abbreviazione di sud-ovest.
Soluzione
È necessario un qualche tipo di dizionario che contiene le parole che non devono essere capitalizzati. Si potrebbe utilizzare un HashSet
per questo. Qualcosa in questo senso:
Set<String> whiteList = new HashSet<String>();
whiteList.add("SW");
whiteList.add("NW");
// ...
for (String word : phrase.split()) {
if (!whiteList.contains(word)) {
makeProper(word);
}
}
Altri suggerimenti
Non c'è modo standard di fare una cosa del genere.
Si potrebbe venire con il proprio metodo e una serie di abbreviazioni che non si desidera "corretto" ed escludere fa dalla trasformazione
L'unico modo ho potuto vedere è:
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 o capitalizzare
, ovviamente, è necessario creare un metodo che deciderà se la parola è l'abbreviazione o no :) come su come mantenere tutti sanno abbreviazione in un file, e la loro lettura.
Apache Commons Lang- contiene WordUtils.capitalizeFully che ho usato per capitalizzare le stringhe senza problemi. Spero che consente di risparmiare tempo.