Miguel Monreal Ordiñana

Posts Tagged ‘Java

Mi idea era limpiar HTML mal formado y pasarlo a XHTML, eso lo he conseguido con JTidy (aún con la poca documentación existente ;( ).

Una vez conseguido y pasar de un codigo HTML horrible tal que así:

<P ALIGN="LEFT">
<FONT FACE="Verdana" SIZE="10" COLOR="#0B333C" LETTERSPACING="0" KERNING="0">
Lorem ipsum dolor
</FONT>
</P>

A XHTML (mucho mejor):

<p style="text-align:left;font-size:10px;font-family:Verdana;color:#0B333C">
Lorem ipsum dolor
</p>

Quería hacer desaparecer el atributo style (y demás posibles atributos) por completo y dejar los <p> limpios. Quizá haya otras maneras, pero se me ocurrió hacerlo con expresiones regulares. Estuve echando un ojo a este tutorial (y al JavaDoc) y este es el código Java necesario:

// Cadena original
String              s = "Lorem ipsum dolor";
// Patron
String        pattern = "<p.*?>";
// Cadena por la que sustituir el patron
String       replace  = "<p>";

// Compilar el patron ignorando si esta en mayusculas o minusculas
Pattern p = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE);
Matcher matcher = p.matcher(s);
System.out.println("Antes:" + s);

// Sustituimos todas las ocurrencias
s = matcher.replaceAll(replace);
System.out.println("Despues:" + s);

Antes:

<p style="text-align:left;font-size:10px;font-family:Verdana;color:#0B333C">
Lorem ipsum dolor
</p>

Despues:

<p>
Lorem ipsum dolor
</p>

Creo que hay partes de la JDK de Java que su uso no es para nada fácil e intuitivo, incluso a veces poco eficiente. Hablo por ejemplo del manejo de ficheros (I/O) y en este caso de calendario, fechas, tiempo, zonas horarias etc.

Resulta realmente lioso hacer uso de ellas para cosas tan sencillas como crear y comparar de fechas o saber cuantos días faltan para una fecha.

De nuevo una librería opensource viene al rescate reimplementando de una manera sencilla esta pata coja de la API. Se trata de la librería Joda, y en su página se define así:

Joda-Time has been created to radically change date and time handling in Java. The JDK classes Date and Calendar are very badly designed, have had numerous bugs and have odd performance effects. Here are some of our reasons for developing and using Joda-Time

Aunque la API es muy grande me ha parecido fácil de utilizarla.

Por cierto para saber cuantos días faltan para un fecha es tan sencillo como lo siguiente:

Days d = Days.daysBetween(startDate, endDate);
int days = d.getDays();
Etiquetas: , ,