Anuncios

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

Anuncios

Esta funcion nos devuelve un valor de tipo String para reemplazar de la cadena informada. Para entender este concepto, primero veamos su sintaxis:

objeto.quoteReplacement(String reemplazo)
Anuncios

El objeto debe ser de tipo Matcher y se aplica directamente. Este posee un solo argumento de tipo String y sera donde pasaremos el valor de reemplazo. Para entenderlo, vamos a analizar el siguiente ejemplo:

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

public class RegEx
{
  public static void main(String[] args)
  {
    String texto = "El perro dice miau. " + "Todos los perros dicen miau";
    String regex = "perro";
    String reemplazo = "gato$";

    Pattern patron = Pattern.compile(regex);
    Matcher buscador = patron.matcher(texto);

    try {
        texto = buscador.replaceAll(reemplazo);
        System.out.println(texto);
    } catch (Exception e) {
        System.out.println("Excepcion: " + e.getMessage());
    }
  }
}
Anuncios
Anuncios

Primero importaremos las dos librerias que utilizaremos en nuestro codigo. Lo siguiente sera definir tres variables de tipo String: la primera sera el texto donde buscaremos, la segunda sera para el patron que buscaremos y la terccera sera para el reemplazo en la funcion. Lo siguiente sera definir un objeto de tipo Pattern para crear un objeto que sera utilizado como patron. El siguiente objeto es el que usaremos para poder buscar el patron en el texto. Para ello, usamos al objeto anterior y le aplicamos el texto mediante la funcion matcher. Despues usamos a try/catch para poder analizar esta seccion del codigo por cualquier eventualidad. Aqui usaremos nuevamente a la variable con el texto para almacenar el resultado devuelto por replaceAll y le pasamos el texto de reemplazo, y finalmente mostrar el cambio realizado. En la seccion del catch mostraremos un descripcion de la excepcion que pueda surgir. Con esto comentado, compilemos y ejecutemos para ver su salida:

$ java RegEx
Excepcion: Illegal group reference: group index is missing
$
Anuncios

En la salida podemos ver como nos devolvio una excepcion porque al pasar el caracter de moneda ($) nos genera esta excepcion. Para solucionarlo, vamos a utilizar a quoteReplacement y para ello en el codigo buscaremos la siguiente linea:

texto = buscador.replaceAll(reemplazo);
Anuncios

Y la modificaremos de la siguiente manera:

texto = buscador.replaceAll(buscador.quoteReplacement(reemplazo));
Anuncios

En el argumento de replaceAll usamos a la funcion y se la aplicamos a buscador y le pasamos el valor de reemplazo como argumento. Como dijimos, esta funcion nos devuelve un valor para ser usado como reemplazo. El resto del codigo sigue siendo el mismo. Compilemos y veamos como es la salida con esta modificacion:

$ java RegEx
El gato$ dice miau. Todos los gato$s dicen miau
$
Anuncios

Como podemos ver ahora si funciono porque al devolver el valor para reemplazar, evitamos que se aplique al caracter $ y nos produzca una excepcion.

Anuncios

En resumen, hoy hemos visto a quoteReplacement, 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
pp258

Donación

Es para mantenimento del sitio, gracias!

$1.50