En Java comment voulez-vous Titre du cas d'une chaîne tout en conservant quelques abréviations courantes
-
11-09-2019 - |
Question
Il y a plusieurs façons Titre Case en java .
Mais comment voulez-vous empêchez quelques-unes des abréviations courantes d'être converties. Par exemple;
System.out.println(makeProper("JAMES A SWEET");
System.out.println(makeProper("123 MAIN ST SW");
James A Sweet
123 Main St Sw
SW devrait rester en majuscules car il est une abréviation du Sud-Ouest.
La solution
Vous avez besoin d'une sorte de dictionnaire qui contient des mots qui ne doivent pas être capitalisés. Vous pouvez utiliser un HashSet
pour cela. Quelque chose le long de ces lignes:
Set<String> whiteList = new HashSet<String>();
whiteList.add("SW");
whiteList.add("NW");
// ...
for (String word : phrase.split()) {
if (!whiteList.contains(word)) {
makeProper(word);
}
}
Autres conseils
Il n'y a pas moyen standard pour faire une telle chose.
Vous pouvez venir avec votre propre méthode et un ensemble d'abréviations que vous ne voulez pas « corriger » et exclure le fait de la transformation
La seule façon que je pouvais voir est:
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 ou capitaliser
de toute évidence, vous devez créer une méthode qui décidera si le mot est une abréviation ou non :) Que diriez-vous garder le savons tous abréviation dans un fichier, et les lire.