Anuncios

Bienvenidos sean a este post, hoy veremos una funcion de Java.

Anuncios

Esta funcion nos permite agregar un reemplazo de un patron en un texto pero no de manera terminal. Esto lo entenderemos cuando veamos el ejemplo, pero antes veamos su sintaxis:

objeto.appendReplacement(StringBuffer sb, String reemplazo)
Anuncios

El objeto debe ser de tipo Matcher y se aplica directamente. El primer argumento es el encargado de almacenar el resultado de los reemplazos, y el segundo argumento sera el elemento que usaremos de reemplazo para el patron coincidente. Para entender el concepto, analicemos el siguiente ejemplo:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegEx
{
  private static String REGEX = "a*b";
  private static String TEXTO = "aabmhmabmmhmabmhhmb";
  private static String REEMPLAZO = ".";

  public static void main(String[] args)
  {
        Pattern patron = Pattern.compile(REGEX);
        Matcher buscador = patron.matcher(TEXTO);
        StringBuffer buffer = new StringBuffer();

        while(buscador.find())
          buscador.appendReplacement(buffer, REEMPLAZO);

        System.out.println(buffer.toString());
  }
}
Anuncios
Anuncios

Primero importaremos las dos librerias que utilizaremos en nuestro codigo. Antes del main, definiremos tres variables: la primera es el patron de coinicidencia que usaremos, la segunda es el texto a trabajar y la ultima sera el caracter de reemplazo pero tambien puede ser un texto. En el main, primero definimos un objeto de tipo Pattern, el cual mediante la funcion compile y la variable REGEX nos permitiran crear el patron que usaremos en nuestro texto para buscar coincidencias. El segundo objeto sera de tipo Matcher y este sera donde realizaremos la busqueda. Por eso, al objeto anterior le aplicamos la funcion matcher y le pasamos a la variable TEXTO para que efectue la busqueda. Y el ultimo objeto sera el que usaremos en la funcion para almacenar el reemplazo realizado, por eso solamente lo construimos. Lo siguiente es un bucle que buscara todas las coincidencias posibles mediante find, y mientras existan se procedera a reemplazar pero todo lo realizado lo almacenaremos en buffer. Para ello, aplicamos la funcion a buscador y como vimos en la sintaxis, primero pasamos donde almacenar los cambios y luego lo que usaremos para reemplazar. Para finalmente, mostrar todo lo realizado en buffer pero le aplicamos la funcion toString para poder ser mostrada como tal. Compilemos y veamos como es su salida:

$ java RegEx
.mhm.mmhm.mhhm.
$
Anuncios

Como pueden ver se reemplazo a las coincidencias de nuestro patron, dejando todo el texto restante sin modificacion asi como la variable original. Pero por que se le denomina como no terminal? Simplemente porque al realizar el agregado en el nuevo objeto no es al final de este sino en la misma secuencia.

Anuncios

En resumen, hoy hemos visto a appendReplacement, que es, para que sirve, como se utiliza, y un ejemplo practico para verlo en accion. Espero les haya resultado de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.50