Em Java, como você maiúscula uma String, preservando algumas abreviaturas comuns
-
11-09-2019 - |
Pergunta
Existem muitas maneiras de Título Caso em java .
Mas como fazê-lo a evitar alguns dos abreviaturas comuns de serem convertidas. Por exemplo;
System.out.println(makeProper("JAMES A SWEET");
System.out.println(makeProper("123 MAIN ST SW");
James A Sweet
123 Main St Sw
SW deve permanecer maiúscula, pois é uma abreviatura para South West.
Solução
Você precisa de algum tipo de dicionário que contém palavras que não devem ser capitalizados. Você poderia usar um HashSet
para isso. Algo ao longo destas linhas:
Set<String> whiteList = new HashSet<String>();
whiteList.add("SW");
whiteList.add("NW");
// ...
for (String word : phrase.split()) {
if (!whiteList.contains(word)) {
makeProper(word);
}
}
Outras dicas
Não há nenhuma maneira padrão de fazer uma coisa dessas.
Você poderia vir acima com seu próprio método e um conjunto de abreviaturas que você não quer "corrigida" e excluir o faz a partir da transformação
A única maneira que eu podia ver é:
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 capitalizar
, obviamente, você tem que criar um método que irá decidir se a palavra é uma abreviação ou não :) como sobre manter todos abreviatura conhecem em um arquivo e lê-los.
Apache Commons-lang contém WordUtils.capitalizeFully que eu usei para capitalizar cordas, sem problema. Espero que você economiza tempo.