java - imprimir - escapar variables php
Java reemplaza los problemas con ''(apĆ³strofo/comilla simple) y /(barra invertida) juntos (7)
Parece que tengo problemas. Tengo una cadena de consulta que tiene valores que pueden contener comillas simples. Esto romperá la cadena de consulta. Así que estaba tratando de hacer un reemplazo para cambiar ''
a /'
.
Aquí hay un código de muestra:
"This is'' it".replace("''", "/'");
El resultado para esto sigue siendo:
"This is'' it".
Cree que estoy haciendo un personaje de escape para la cita.
Así que probé estas dos piezas de código:
"This is'' it".replace("''", "//'"); // // for the backslash, and a '' char
"This is'' it".replace("''", "///'"); // // for the backslash, and /' for the '' char
Ambos de los resultados anteriores TODA la misma salida:
"This is'' it"
Solo puedo hacer que esto escupiera una barra con:
"This is'' it".replace("''", "////'");
Lo que resulta en:
"This is//' it"
¿Alguna sugerencia? Solo quiero reemplazar un ''
con /'
.
No parece que debería ser tan difícil.
Ejemplo:
String teste = " ''Bauru ''";
teste = teste.replaceAll(" '' ","");
JOptionPane.showMessageDialog(null,teste);
En primer lugar, si intenta codificar apostophes para cadenas de consulta, deben estar URLEncoded, no escapándose con una barra diagonal inversa principal. Para ese uso URLEncoder.encode(String, String)
(Por cierto: el segundo argumento siempre debe ser "UTF-8"
). En segundo lugar, si desea reemplazar todas las instancias de apostophe con apóstrofo de barra inclinada invertida, debe escapar de la barra invertida en su expresión de cadena con una barra invertida inicial. Me gusta esto:
"This is'' it".replace("''", "//'");
Editar:
Ahora veo que probablemente estés intentando construir dinámicamente una declaración SQL. No lo hagas de esta manera. Su código será susceptible a ataques de inyección SQL. En su lugar, use un PreparedStatement
.
He usado
str.replace("''", "");
para reemplazar la comilla simple en mi cadena. esta trabajando bien para mi.
He usado un truco para manejar el carácter especial de apóstrofo. Cuando reemplace ''for'', debe colocar cuatro barras diagonales inversas antes del apóstrofo.
str.replaceAll("''","////'");
Recuerde que stringToEdit.replaceAll(String, String)
devuelve la cadena de resultados. No modifica stringToEdit porque las cadenas son inmutables en Java. Para que cualquier cambio se adhiera, debes usar
stringToEdit = stringToEdit.replaceAll("''", "//'");
Si desea usarlo en JavaScript, puede usar
str.replace("SP","//SP");
Pero en Java
str.replaceAll("SP","//SP");
funcionará perfectamente
SP: personaje especial
De lo contrario, puede usar Apache''s EscapeUtil. Solucionará tu problema.
Use "This is'' it".replace("''", "//'")