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

Заменить все двойные кавычки в строке

Я извлекаю данные из базы данных, где поле содержит String с данными HTML. Я хочу заменить все двойные кавычки таким образом, чтобы их можно было использовать для parseJSON jQuery.

Используя java, я пытаюсь заменить кавычки, используя.

details.replaceAll("\"","\\\"");
  //details.replaceAll("\"","&quote;"); details.replaceAll("\"","&#34");

Попробовал al lthis, но результирующая строка не отображает изменения. Статья O'reily предписывает Статья apache string utils. Есть ли другой способ?

Любое регулярное выражение или что-то еще?

4b9b3361

Ответ 1

Вот как

String details = "Hello \"world\"!";
details = details.replace("\"","\\\"");
System.out.println(details);               // Hello \"world\"!

Обратите внимание, что строки immutable, поэтому недостаточно просто сделать details.replace("\"","\\\""). Вы должны переназначить переменную details в результирующую строку.


Использование

details = details.replaceAll("\"","&quote;");

вместо этого результат

Hello &quote;world&quote;!

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