La división de Java en ^ (¿caret?) no funciona, ¿es este un carácter especial?

2 minutos de lectura

avatar de usuario
arte vanderlay

En Java, estoy tratando de dividir en el ^ personaje, pero no lo reconoce. escapar \^ arroja error de código.

¿Es este un carácter especial o necesito hacer algo más para que lo reconozca?

String splitChr = "^";
String[] fmgStrng = aryToSplit.split(splitChr); 

  • Utilizar String[] fmgStrng = aryToSplit.split(Pattern.quote("^"));

    – Tharusha

    14 oct 2021 a las 16:01

los ^ es un carácter especial en expresiones regulares de Java: significa “coincidir con el comienzo” de una entrada.

Tendrás que escapar con "\\^". La barra doble es necesaria para escapar de la \de lo contrario, el compilador de Java pensará que está intentando usar un \^ secuencia en una cadena, similar a \n para nuevas líneas.

\^ Sin embargo, no es una secuencia de escape especial, por lo que obtendrá errores de compilación.

En resumen, utiliza "\\^".

  • O Pattern.quote("^").

    –Andy Turner

    4 oct 2021 a las 14:02

El ^ coincide con el comienzo de la cadena. Debe escapar, pero en este caso debe escapar para que el analizador de expresiones regulares comprenda lo que significa escapar del escape, por lo que:

String splitChr = "\\^";
...

debería conseguirte lo que quieres.

String.split() acepta una expresión regular. los ^ El signo es un símbolo especial que indica el comienzo de la secuencia de entrada. Tienes que escapar para que funcione. Tenías razón tratando de escapar con \ pero es un carácter especial para escapar cosas en cadenas de Java, por lo que debe escapar del carácter de escape con otro \. Te dará:

\\^

avatar de usuario
basilio alemán

utilizar "\\^". Utilice este ejemplo como guía:

    String aryToSplit = "word1^word2";
    String splitChr = "\\^";
    String[] fmgStrng = aryToSplit.split(splitChr); 
    System.out.println(fmgStrng[0]+","+fmgStrng[1]);

Debería imprimir “palabra1,palabra2”, dividiendo efectivamente la cadena usando "\\^". La primera barra se usa para escapar de la segunda barra. Si no hubiera doble barra, Java pensaría que ^ es un carácter de escape, como la nueva línea "\n"

avatar de usuario
karuna

Ninguna de las respuestas anteriores no tiene sentido. Aquí está la explicación correcta.

  1. Como todos sabemos, ^ no necesita escaparse en Java String.
  2. Como ^ es un charectar especial en RegulalExpression , espera que pases \^
  3. ¿Cómo hacemos una cadena \^ en Java? Me gusta esto String splitstr = "\\^";

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad