Заменить все двойные кавычки в строке - PullRequest
48 голосов
/ 19 марта 2011

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

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

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

Результирующая строка не показывает желаемое изменение.Статья O'Reilly предписывает использовать строковые утилиты Apache.Есть ли другой способ ??

Есть ли регулярное выражение или что-то, что я мог бы использовать?

Ответы [ 7 ]

89 голосов
/ 19 марта 2011

Вот как

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

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


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

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

приводит к

Hello &quote;world&quote;!
29 голосов
/ 06 декабря 2011

Не должно ли это быть:

.replaceAll("\"","\\\\\"")

ПЯТЬ обратных слэшей в замещающей строке.

5 голосов
/ 19 марта 2011

Я думаю, что регулярное выражение в этой ситуации немного излишне.Если вы просто хотите удалить все кавычки в вашей строке, я бы использовал этот код:

details = details.replace("\"", "");
4 голосов
/ 19 марта 2011

Чтобы это работало в JSON, вам нужно экранировать несколько больше символов, чем это.

myString.replace("\\", "\\\\")
    .replace("\"", "\\\"")
    .replace("\r", "\\r")
    .replace("\n", "\\n")

, и если вы хотите использовать json2.js для его анализа, вам также необходимоescape

   .replace("\u2028", "\\u2028")
   .replace("\u2029", "\\u2029")

, который JSON допускает внутри строк в кавычках, а JavaScript - нет.

3 голосов
/ 05 марта 2013

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

Вот что я сделал: и это работает:)

чтобы убежать двойные кавычки :

    if(string.contains("\"")) {
        string = string.replaceAll("\"", "\\\\\"");
    }

и экранировать одинарные кавычки :

    if(string.contains("\'")) {
        string = string.replaceAll("\'", "\\\\'");
    }

PS: обратите внимание на количество использованных выше обратных косых черт.

2 голосов
/ 23 июля 2013

Это удаление двойных кавычек в строке.

str1 = str.replace(/"/g, "");
alert(str1);
0 голосов
/ 31 октября 2015

Следующее регулярное выражение будет работать для обоих:

  text = text.replaceAll("('|\")", "\\\\$1");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...