Retroceder   Foros del Web > Programación para sitios web > Java y JSP
Crea un nuevo usuario o inicia sesión utilizando tu cuenta de Facebook
Connect with Facebook

Respuesta
 
Herramientas Desplegado
Antiguo 08-ene-2009, 02:16   #1 (permalink)
javimartinez se está portando bien
 
Avatar de javimartinez
 
Fecha de Ingreso: marzo-2003
Ubicación: Leganés (Madrid)
Mensajes: 258
javimartinez está desconectado
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

Página personal: Acertijolandia: Acertijos, Adivinanzas, Enigmas, Problemas de Ajedrez
  Responder Citando
Antiguo 08-ene-2009, 06:43   #2 (permalink)
GreenEyed se está ganando tu confianza
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.129
GreenEyed está desconectado
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!
__________________
TAANSTAFL - Para obtener respuestas inteligentes, lo mejor es empezar por preguntar de forma inteligente.
  Responder Citando
Antiguo 08-ene-2009, 06:51   #3 (permalink)
webness ha deshabilitado el karma
 
Avatar de webness
 
Fecha de Ingreso: enero-2009
Mensajes: 60
Enviar un mensaje por MSN a webness
webness está desconectado
Respuesta: Duda: String, replaceAll y caracteres de escape

Utiliza solamente: cadena.replace("\\,",",");
  Responder Citando
Antiguo 08-ene-2009, 08:22   #4 (permalink)
javimartinez se está portando bien
 
Avatar de javimartinez
 
Fecha de Ingreso: marzo-2003
Ubicación: Leganés (Madrid)
Mensajes: 258
javimartinez está desconectado
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

Página personal: Acertijolandia: Acertijos, Adivinanzas, Enigmas, Problemas de Ajedrez
  Responder Citando
Respuesta
No hay votos aún.

Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code está Activado
Caritas están Activado
[IMG] está Desactivado
Código HTML está Desactivado
Trackbacks está Desactivado
Pingbacks está Desactivado
Refbacks está Desactivado



La zona horaria es GMT -6. Ahora son las 09:05.
Políticas de Uso de Foros del Web


Message Board Statistics

SEO by vBSEO 3.3.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100