En Java comment voulez-vous Titre du cas d'une chaîne tout en conservant quelques abréviations courantes

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

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

Était-ce utile?

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.

scroll top