En Java ¿cómo Título del caso una cadena conservando algunas abreviaturas comunes
-
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.
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.