Подтвердить что ты не робот

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"

Любые предложения? Я просто хочу заменить ' на \'.

Не похоже, что это должно быть так сложно.

4b9b3361

Ответ 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);