Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

360
Vistas
Java string.replace no funciona como string.replaceAll

Tengo una entrada proveniente de la base de datos en el siguiente formato. Primero usé replaceAll en lugar de la función replace, pero SonarCloud muestra un error y pide cambiar de replaceAll a replace. Sin embargo, el reemplazo no reemplaza toda la barra invertida, de hecho, no cambia nada en el texto.

Entrada de la base de datos en código java:

 ""{\"id\":\"5947223f-9c50-425f-950b-e126c94b3adf\",\"name\":\"shruti\"}

Con replaceAll escribí el código de la siguiente manera que funciona bien:

 abcString.replaceAll("\\\\", "").replaceFirst("\"","");

Para hacer feliz a SonarCloud, trato de cambiar replaceAll con replace, que a su vez indica que elimine el método replaceFirst; de lo contrario, elimina las comillas dobles de la salida de la base de datos.

Código con función de reemplazo:

 abcString.replace("\\\\", "")

Lo segundo que probé da error:

 Unexpected character ('\' (code 92)): was expecting double-quote to start field name ! at [Source: (String)"{\"id\":\"5947223f-9c50-425f-950b-e126c94b3adf\",\"name\":\"shruti\"}
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

tu verdadero problema

JSON no es regular en absoluto, no puedes simplemente jugar con él de esta manera. Debería usar un analizador JSON real, y lo que sea que le haya dado esta monstruosidad con barra invertida es donde radica el error real. El problema al que se enfrenta aquí se puede 'arreglar', pero su código seguirá siendo un desastre frágil hasta que solucione este problema subyacente.

Tu acercamiento a SonarCloud

No debería usar herramientas como esta a menos que comprenda lo que hacen, y dado que hace esta pregunta sin tener idea de por qué SonarCloud incluso sugiere que reemplace replaceAll para reemplazar, parece que este consejo se aplica a usted. Lea siempre el razonamiento detrás de una regla de pelusa.

El problema

.replaceAll reemplaza cada aparición, pero se basa en expresiones regulares. .replace reemplaza cada ocurrencia, y no lo es, simplemente reemplaza la cadena literal que escribe. Entonces, todo lo que necesita hacer es .replace("\\", "") . El replaceAll requiere 4 barras invertidas, porque eso se convierte en una cadena con 2 barras invertidas, que es expresión regular para '1 barra invertida'.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda