Есть ли в Java символ «@» для экранирования строковых кавычек?

В моей строке есть двойные кавычки, в C# я бы сделал:

string blah = @"this is my ""text";

как бы я сделал это на Java?


person mrblah    schedule 07.01.2010    source источник
comment
возможный дубликат Java-эквивалента дословных строк C# с @   -  person mmmmmm    schedule 31.03.2012
comment
Примечание (январь 2018 г.), необработанные строковые литералы могут появиться для Java (JDK 10 или более): см. В Java есть способ написать строковый литерал без экранирования кавычек?.   -  person VonC    schedule 28.01.2018


Ответы (3)


Нет. Такая функция недоступна в Java.
Из документов от Sun:

Когда escape-последовательность встречается в операторе печати, компилятор интерпретирует ее соответствующим образом. Например, если вы хотите поместить кавычки в кавычки, вы должны использовать escape-последовательность \", во внутренних кавычках. Чтобы напечатать предложение

She said "Hello!" to me.

ты бы написал

System.out.println("She said \"Hello!\" to me.");
person codaddict    schedule 07.01.2010

В настоящее время ничего подобного нет, но это запрос на улучшение «Исправить понятно».

Если добавить эту функцию, будут разрешены такие строковые литералы:

String qry = @"
   SELECT
     a.name, b.number
   FROM
     User a, Data b
   WHERE
     a.name = "James"
      AND
     a.id = b.id
";

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

person polygenelubricants    schedule 21.04.2010
comment
Я не понимаю причин отказываться от функции, потому что это синтаксический сахар. Разрешение кодерам не писать бойлерный код кажется мне улучшением языка... - person jeremy-george; 18.04.2011
comment
Ссылка bugs.sun.com в этом ответе в настоящее время не работает; он ссылается на страницу Oracle с сообщением «Эта ошибка недоступна». Доступна ли где-нибудь текущая версия этой страницы? - person Jon Schneider; 30.10.2013

Да* (с сентября 2019 г.), но используется другой синтаксис. «» (три двойных кавычки).

* В более поздних версиях Java (+13 в предварительном просмотре, +15 в стадии готовности к производству) в основном эквивалентных результатов можно добиться с помощью текстовых блоков Java.

String html = """         
            <xml>
                <ody>
                    <pan>example xml </pan>
                </ody>
            </xml>""";

https://docs.oracle.com/en/java/javase/13/text_blocks/index.html

person João    schedule 07.03.2021