Foros del Web » Programación para mayores de 30 ;) » Java »

Duda: String, replaceAll y caracteres de escape

Estas en el tema de Duda: String, replaceAll y caracteres de escape en el foro de Java en Foros del Web. Hola, Estoy intentando reemplazar en una cadena de texto la subcadena \, (es una barra invertida y una coma). Para ello he provado con el ...
  #1 (permalink)  
Antiguo 08/01/2009, 03:16
Avatar de javimartinez  
Fecha de Ingreso: marzo-2003
Ubicación: Leganés (Madrid)
Mensajes: 284
Antigüedad: 21 años, 1 mes
Puntos: 1
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
__________________
Javi Martínez

Web: Acertijolandia Blog: A Entretenerse
  #2 (permalink)  
Antiguo 08/01/2009, 07:43
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 7 meses
Puntos: 51
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!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #3 (permalink)  
Antiguo 08/01/2009, 07:51
Avatar de webness  
Fecha de Ingreso: enero-2009
Ubicación: BOGOTA
Mensajes: 312
Antigüedad: 15 años, 4 meses
Puntos: 5
Respuesta: Duda: String, replaceAll y caracteres de escape

Utiliza solamente: cadena.replace("\\,",",");
  #4 (permalink)  
Antiguo 08/01/2009, 09:22
Avatar de javimartinez  
Fecha de Ingreso: marzo-2003
Ubicación: Leganés (Madrid)
Mensajes: 284
Antigüedad: 21 años, 1 mes
Puntos: 1
Respuesta: Duda: String, replaceAll y caracteres de escape

Cita:
Iniciado por GreenEyed Ver Mensaje
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 :)
__________________
Javi Martínez

Web: Acertijolandia Blog: A Entretenerse
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:30.