Java заменяет проблемы на "(апострофа/одиночная кавычка) и\(обратная косая черта) вместе
Кажется, у меня проблемы. У меня есть строка запроса, которая имеет значения, которые могут содержать одинарные кавычки. Это сломает строку запроса. Поэтому я пытался сделать замену, чтобы изменить '
на \'
.
Вот пример кода:
"This is' it".replace("'", "\'");
Выход для этого по-прежнему:
"This is' it".
Он думает, что я просто делаю escape-символ для цитаты.
Итак, я пробовал эти две части кода:
"This is' it".replace("'", "\\'"); // \\ for the backslash, and a ' char
"This is' it".replace("'", "\\\'"); // \\ for the backslash, and \' for the ' char
Оба вышеуказанных STILL выводят один и тот же вывод:
"This is' it"
Я могу только представить, чтобы на самом деле выплюнуть косую черту:
"This is' it".replace("'", "\\\\'");
Результат:
"This is\\' it"
Любые предложения? Я просто хочу заменить '
на \'
.
Не похоже, что это должно быть так сложно.
Ответы
Ответ 1
Прежде всего, если вы пытаетесь закодировать апостофы для запросов, они должны быть URLEncoded, а не экранированы с ведущей обратной косой чертой. Для этого используйте URLEncoder.encode(String, String)
(BTW: второй аргумент всегда должен быть "UTF-8"
). Во-вторых, если вы хотите заменить все экземпляры апостофа апострофом обратной косой черты, вы должны избежать обратного слэша в своем строковом выражении с помощью обратного слэша. Вот так:
"This is' it".replace("'", "\\'");
Изменить:
Теперь я вижу, что вы, вероятно, пытаетесь динамически строить инструкцию SQL. Не делать это так. Ваш код будет восприимчив к атакам SQL-инъекций. Вместо этого используйте PreparedStatement
.
Ответ 2
Используйте "This is' it".replace("'", "\\'")
Ответ 3
Я использовал трюк для обработки специального символа апострофа. При замене "для" вам нужно поставить четыре обратные косые черты перед апострофом.
str.replaceAll("'","\\\\'");
Ответ 4
Если вы хотите использовать его в JavaScript, вы можете использовать
str.replace("SP","\\SP");
Но в Java
str.replaceAll("SP","\\SP");
будет работать отлично.
SP: специальный символ
В противном случае вы можете использовать Apache EscapeUtil. Это решит вашу проблему.
Ответ 5
Я использовал
str.replace("'", "");
чтобы заменить одиночную кавычку в моей строке. Его работа прекрасна для меня.
Ответ 6
Помните, что stringToEdit.replaceAll(String, String)
возвращает строку результата. Он не изменяет stringToEdit, потому что строки являются неизменными в Java. Чтобы получить какое-либо изменение, вы должны использовать
stringToEdit = stringToEdit.replaceAll("'", "\\'");
Ответ 7
Пример:
String teste = " 'Bauru '";
teste = teste.replaceAll(" ' ","");
JOptionPane.showMessageDialog(null,teste);