entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Quitar fragmento de un string JAVA

Lo que estoy intentando es separar una cadena String de otra...pero no entiendo porque me da este error...

package GUI;
public class m {

    public static void main(String[] args) {
        String ruta = "C:\\Users\\PcPortatil\\Pictures\\";
        String username = System.getProperty("user.name");
        String delimitador = "C:\\Users\\" + username;
        String NuevaRuta = ruta.replaceAll(delimitador, "");
        System.out.println(NuevaRuta);
    }

}

Me da este error:

Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 3
C:\Users\PcPortatil
   ^
    at java.util.regex.Pattern.error(Unknown Source)
    at java.util.regex.Pattern.escape(Unknown Source)
    at java.util.regex.Pattern.atom(Unknown Source)
    at java.util.regex.Pattern.sequence(Unknown Source)
    at java.util.regex.Pattern.expr(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.util.regex.Pattern.<init>(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.lang.String.replaceAll(Unknown Source)
    at GUI.m.main(m.java:11)

1 Respuesta

3votos

MitsuGami Puntos8010
  1. Se utiliza \\ para escapar un backslash, ya que si pusieses solo \ el compilador lo interpretará como si lo que sigue a ese backslash fuese un carácter de escape.

    Entonces, String ruta = "C:\\Users\\PcPortatil\\Pictures\\"; pasa a ser: String ruta = "C:\Users\PcPortatil\Pictures\"; (1)

  2. Al hacer uso de replaceAll se usará (1) como patrón de búsqueda, por lo que se detecta backslashes simples y el compilador espera un carácter de escape que nunca llegal, lanzando una PaternSyntaxException.

Utiliza la constante File.separator el cual te devuelve el caracter de separación entre directorios de acuerdo al SO.

String ruta = "C:" + File.separator + "Users" + File.separator + "PcPortatil" + File.separator + "Pictures";
String userName = System.getProperty("user.name");
String delimitador = "C:" + File.separator + "Users" + File.separator + userName;
String nuevaRuta = ruta.replaceAll(delimitador, "");

Yesod comentado Nov 30, 2015

Me sigue dando el mismo error...que raro... :)

MitsuGami comentado Nov 30, 2015

Negativo. Lo he probado antes de escribir la respuesta y funcionó correctamente. Revisa bien.

Yesod comentado Nov 30, 2015

He copiado y pegado lo que has puesto...¿Lo has puesto correctamente por aquí?

MitsuGami comentado Nov 30, 2015

Así es, el código es idéntico. Mira:

Yesod comentado Nov 30, 2015

enter image description here

He mirado y creo que puede ser porque estas usando Linux y la barra que se usa es / en vez de \

Por favor, accede o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Otras Preguntas y Respuestas


Actividad Reciente

¿Eres Usuario Apple?

...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta