Заменить все двойные кавычки в строке
Я извлекаю данные из базы данных, где поле содержит String с данными HTML. Я хочу заменить все двойные кавычки таким образом, чтобы их можно было использовать для parseJSON
jQuery.
Используя java, я пытаюсь заменить кавычки, используя.
details.replaceAll("\"","\\\"");
//details.replaceAll("\"",""e;"); details.replaceAll("\"",""");
Попробовал al lthis, но результирующая строка не отображает изменения.
Статья O'reily предписывает Статья apache string utils. Есть ли другой способ?
Любое регулярное выражение или что-то еще?
Ответы
Ответ 1
Вот как
String details = "Hello \"world\"!";
details = details.replace("\"","\\\"");
System.out.println(details); // Hello \"world\"!
Обратите внимание, что строки immutable, поэтому недостаточно просто сделать details.replace("\"","\\\"")
. Вы должны переназначить переменную details
в результирующую строку.
Использование
details = details.replaceAll("\"",""e;");
вместо этого результат
Hello "e;world"e;!
Ответ 2
Разве это не должно быть:
.replaceAll("\"","\\\\\"")
ПЯТЬ обратная косая черта в заменяющей строке.
Ответ 3
Я думаю, что в этой ситуации регулярное выражение является немного излишним. Если вы просто хотите удалить все кавычки в своей строке, я бы использовал этот код:
details = details.replace("\"", "");
Ответ 4
Чтобы заставить его работать в JSON, вам нужно избегать еще нескольких символов.
myString.replace("\\", "\\\\")
.replace("\"", "\\\"")
.replace("\r", "\\r")
.replace("\n", "\\n")
и если вы хотите использовать json2.js
для синтаксического анализа, вам также необходимо выйти
.replace("\u2028", "\\u2028")
.replace("\u2029", "\\u2029")
который JSON разрешает внутри цитируемых строк, но не поддерживает JavaScript.
Ответ 5
Я знаю, что ответ уже принят здесь, но я просто хотел поделиться тем, что нашел, когда пытался избежать двойных кавычек и одинарных кавычек.
Вот что я сделал: и это работает:)
чтобы избежать двойных кавычек:
if(string.contains("\"")) {
string = string.replaceAll("\"", "\\\\\"");
}
и избежать одиночных кавычек:
if(string.contains("\'")) {
string = string.replaceAll("\'", "\\\\'");
}
PS: Обратите внимание на количество обратных косых черт, используемых выше.
Ответ 6
Это делается для удаления двойных кавычек в строке.
str1 = str.replace(/"/g, "");
alert(str1);
Ответ 7
Следующее регулярное выражение будет работать для обоих:
text = text.replaceAll("('|\")", "\\\\$1");