Em Java, como você maiúscula uma String, preservando algumas abreviaturas comuns

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

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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top