Métodos replace, replaceFirst y replaceAll y expresiones regulares

Continuando con la entrada anterior de manejo de cadenas, voy a analizar los métodos siguientes:

Antes de nada, cabe explicar que un CharSequence es una interfaz que encapsula una secuencia de caracteres de sólo lectura y acceso uniforme. La clase String implementa dicha interfaz, al igual que las clases CharBuffer, Segment, StringBuffer y StringBuilder. Para usar el método replace lo más sencillo será utilizar un String normal.

Los métodos replaceFirst y replaceAll trabajarán mediante expresiones regulares (en adelante ER), un elemento muy potente de la programación, pero que os podrá dar muchos dolores de cabeza en un futuro. En resumidas cuentas, una expresión regular es una cadena de texto que indica una serie de patrones. Estos patrones se compararán con todas las cadenas sobre las que apliquemos la ER y obtendremos una lista de las cadenas que cumplen con dicho patrón.

Por ejemplo, tenemos la siguiente lista de palabras:

gato
gata
gatu
gatos
gatas

  • Si escribimos la siguiente ER "gato", obtendremos como resultado las palabras gato y gatos.
  • Si escribimos la ER "gat[o|a]" obtendremos gato, gata, gatos, gatas.
  • Si escribimos la ER "gato$" obtendremos solamente gato, pues el símbolo '$' representa el final de la cadena, por lo que también podría obtener cualquier palabra que terminara por -gato.
  • El símbolo '^' representa el inicio de la cadena.

Como he explicado antes, las expresiones regulares pueden llegar a ser muy complejas, por lo que os recomiendo leer algunos artículos sobre el tema:

replace(CharSequence target, CharSequence replacement)

Este método reemplaza la cadena target por la cadena replacement. Añadir que reemplazar "aa"  por "oo" en la cadena "holaaa", devolverá "holooa" y no "holaoo". Veamos un fragmento de código:

 

replaceFirst(String regex, String replacement)

Este método reemplaza sólo la primera cadena que coincida con la expresión regular regex por la cadena replacement. Ejemplo:

 

replaceAll(String regex, String replacement)

Este método es similar a replaceFirst, pero reemplaza todas las cadenas que coinciden con la expresión regular dada regex por la cadena replacement. Ejemplo:

 

Su voto: Nada Promedio: 2.6 (89 votos)

Hola, entiendo estos ejemplos, pero quería saber cómo puedo quitar todos los caracteres especiales de una cadena menos algunos como: @ _ todo lo necesito para un servicio web en JAVA

Esperando alguna ayuda de su parte, me despido.

Enviar un comentario nuevo

El contenido de este campo se mantiene privado y no se mostrará públicamente.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Saltos automáticos de líneas y de párrafos.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <pre>. The supported tag styles are: <foo>, [foo].

Más información sobre opciones de formato