En Java ¿cómo Título del caso una cadena conservando algunas abreviaturas comunes

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

  •  11-09-2019
  •  | 
  •  

Pregunta

Hay muchas maneras a Título del caso en java .

Pero ¿cómo evitar algunas de las abreviaturas comunes se conviertan. Por ejemplo;

System.out.println(makeProper("JAMES A SWEET");
System.out.println(makeProper("123 MAIN ST SW");

James A Sweet
123 Main St Sw

SW debe permanecer en mayúsculas, ya que es una abreviatura de South West.

¿Fue útil?

Solución

Es necesario algún tipo de diccionario que contiene palabras que no deben escribir en mayúsculas. Se puede usar un HashSet para eso. Algo a lo largo de estas líneas:

Set<String> whiteList = new HashSet<String>();
whiteList.add("SW");
whiteList.add("NW");
// ...
for (String word : phrase.split()) {
    if (!whiteList.contains(word)) {
        makeProper(word);
    }
}

Otros consejos

No hay manera estándar de hacer tal cosa.

Se puede venir con su propio método y un conjunto de abreviaturas que no desea "corregida" y excluir hace de la transformación

La única manera que pude ver es:

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 capitalizar
, obviamente, tiene que crear un método que decidir si la palabra es una abreviatura o no :) forma de mantener todos saben abreviatura en un archivo, y la lectura de ellos.

Apache Commons-lang contiene WordUtils.capitalizeFully la que he utilizado para capitalizar las cadenas sin problema. Espero que le ahorra tiempo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top