Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Java (http://www.forosdelweb.com/f45/)
-   -   Duda: String, replaceAll y caracteres de escape (http://www.forosdelweb.com/f45/duda-string-replaceall-caracteres-escape-660140/)

javimartinez 08/01/2009 03:16

Duda: String, replaceAll y caracteres de escape
 
Hola,

Estoy intentando reemplazar en una cadena de texto la subcadena \, (es una barra invertida y una coma). Para ello he provado con el siguiente código (entre muchos, este me parece el más lógico):

Código:

String a = <<leo de un fichero el siguiente texto, por ej: "Hola \, que tal">>

int indexComaEscapada = a.indexOf("\\,");
if (indexComaEscapada>=0)
      a = a.replaceAll("\\,", ",");

Como resultado me queda exactamente la cadena original. Sin embargo, si pruebo a sustituirlo así:

Código:

a=a.replaceAll("\\,"pepe")
la cadena que me resulta sería

"Hola \pepe que tal"

es decir, me sustituye la coma por "pepe", pero pasa totalmente de las barras.

¿Alguna idea de como realizar la sustitución? (Bueno, el caso ya lo tengo solucionado haciendo dos substring con el indexOf, el cual si funciona, pero por curiosidad me gustaría saber si se puede hacer con el replaceAll) ¿Sabeis por qué pasa totalmente de las barras escapadas en el replaces (pese a que en la parte de patrones aparece la \\ como caracter de escape)? Por cierto, estoy con java 1.4.2

Gracias y un saludo

GreenEyed 08/01/2009 07:43

Respuesta: Duda: String, replaceAll y caracteres de escape
 
Suena un poco raro, pero \\ dentro de un String es en realidad \, así que para escribir la expresión regular \\, tienes que escribir \\\\.

System.err.println("Resultado: " + a.replaceAll("\\\\,","pepe"));

->

Resultado: Hola pepe que tal

S!

webness 08/01/2009 07:51

Respuesta: Duda: String, replaceAll y caracteres de escape
 
Utiliza solamente: cadena.replace("\\,",",");

javimartinez 08/01/2009 09:22

Respuesta: Duda: String, replaceAll y caracteres de escape
 
Cita:

Iniciado por GreenEyed (Mensaje 2734160)
Suena un poco raro, pero \\ dentro de un String es en realidad \, así que para escribir la expresión regular \\, tienes que escribir \\\\.

System.err.println("Resultado: " + a.replaceAll("\\\\,","pepe"));

->

Resultado: Hola pepe que tal

S!

Gracias GreenEyed, lo he probado y con las cuatro barras es como funciona :)


La zona horaria es GMT -6. Ahora son las 20:45.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.