Java заменяет проблемы с ' (Апостроф/одинарная кавычка) и (обратная косая черта) вместе
кажется, у меня проблемы. У меня есть строка запроса, которая имеет значения, которые могут содержать одинарные кавычки. Это нарушит строку запроса. Поэтому я пытался сделать замену, чтобы изменить '
to '
.
вот пример кода:
"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
оба выше по-прежнему приводит к тому же результату:
"This is' it"
я могу только, кажется, получить это, чтобы на самом деле выплюнуть Слэш с:
"This is' it".replace("'", "\'");
что приводит к:
"This is' it"
какие предложения? Я просто хочу заменить '
С '
.
не похоже, что это должно быть так сложно.
7 ответов
прежде всего, если вы пытаетесь кодировать апостофы для querystrings, они должны быть URLEncoded, а не экранированы с ведущей обратной косой чертой. Для этого используйте URLEncoder.encode(String, String)
(кстати: второй аргумент всегда должен быть "UTF-8"
). Во-вторых, если вы хотите заменить все экземпляры apostophe обратной косой чертой Апострофа, вы должны избежать обратной косой черты в строковом выражении с ведущей обратной косой чертой. Вот так:
"This is' it".replace("'", "\'");
Edit:
теперь я вижу, что вы вероятно, пытается динамически построить инструкцию SQL. не сделай так. Ваш код будет подвержен SQL-инъекциям. Вместо этого используйте PreparedStatement
.
я использовал трюк для обработки специального символа Апострофа. При замене "for \" вам необходимо разместить четыре обратных косых черты перед Апострофом.
str.replaceAll("'","\\'");
Если вы хотите использовать его в JavaScript, вы можете использовать
str.replace("SP","\SP");
но в Java
str.replaceAll("SP","\SP");
будет прекрасно работать.
SP: специальный символ
в противном случае вы можете использовать EscapeUtil Apache. Это решит вашу проблему.
я использовал
str.replace("'", "");
чтобы заменить одинарную кавычку в моей строке. Он отлично работает для меня.
помните, что stringToEdit.replaceAll(String, String)
возвращает в строке результата. Он не изменяет stringToEdit, потому что строки неизменяемы в Java. Чтобы получить какие-либо изменения, вы должны использовать
stringToEdit = stringToEdit.replaceAll("'", "\'");
пример :
String teste = " 'Bauru '";
teste = teste.replaceAll(" ' ","");
JOptionPane.showMessageDialog(null,teste);