Как вывести кавычки в java
Для вывода кавычек в Java необходимо использовать специальный символ экранирования — \ (обратная косая черта) :
public class App public static void main(String[] args) System.out.println("\"Hello\""); // => "Hello" System.out.println("\'Hello\'"); // => 'Hello' > >
Как вставить символ двойных кавычек в строку?
Самый стандартный способ, применяемый во многих языка, в том числе и в Java — экранирование с помощью символа \ :
String myString = "Строка со \"словом\" в кавычках";
Отслеживать
28.5k 12 12 золотых знаков 59 59 серебряных знаков 118 118 бронзовых знаков
ответ дан 2 апр 2015 в 8:24
DreamChild DreamChild
36.2k 3 3 золотых знака 45 45 серебряных знаков 85 85 бронзовых знаков
Это еще называется escape символ
2 апр 2015 в 8:47
Благодарю, это работает, но задача усложнилась.Перед кавычками еще надо поставить слеш +»
2 апр 2015 в 9:13
решается аналогично
2 апр 2015 в 9:16
Да, действительно
2 апр 2015 в 9:17
в конце строки кавычки лишние
13 дек 2016 в 15:06
String str1 = "Строка со \"словом\" в кавычках";
Отслеживать
ответ дан 2 апр 2015 в 8:23
Павел Вершинин Павел Вершинин
3,981 15 15 серебряных знаков 23 23 бронзовых знака
Да, есть, добавляешь перед каждым символом который нужно экранировать \ . Например, для вывода на экран «C: \\\folder\\\folder1\» нужно добавить по «экрану» перед КАЖДЫМ символом вот так:
System.out.println("\"C: \\\\\\\folder\\\\\\\folder1\\\\\"");
Отслеживать
9,323 3 3 золотых знака 29 29 серебряных знаков 57 57 бронзовых знаков
ответ дан 31 мар 2017 в 9:26
21 1 1 бронзовый знак
final char dm = (char) 34; final String string = "STRING: " + dm + " string " + dm; System.out.println(string);
Отслеживать
ответ дан 12 ноя 2017 в 7:49
4,086 4 4 золотых знака 13 13 серебряных знаков 29 29 бронзовых знаков
Вообще не понял, а за что заминусовали? У меня всё отработало прекрасно.
20 дек 2018 в 15:24
String x = "\\"; String y = "\""; System.out.println("It's Windows path: " + y + "C:" + x + "Program Files" + x + "Java" + x + "jdk1.7.0" + x + "bin" + y); System.out.println("It's Java string: " + x + y + "C:" + x + x + "Program Files" + x + x + "Java" + x + x + "jdk1.7.0" + x + x + "bin" + x + y);
Отслеживать
ответ дан 24 янв 2016 в 21:12
11 1 1 бронзовый знак
Решение задачи с JavaRush, верно? А есть «нормальный» способ экранировать кавычки?
26 окт 2016 в 17:46
@Dunaevsky Maxim, А символом для экранирования экранировать не нормально? 🙂
29 июн 2017 в 14:06
- java
- android
- строки
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.21.1314
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Экранирование символов в Java

Что-то пошло не так! Данная статья писалась как выполнение тестового задания на должность в команде JavaRush. И писалась как полноценная лекция. За счет этого гарантирую вам качество и количество полезных знаний скопившихся в этом посте. Помимо практической и теоретической информации, в статье присутствуют интересные факты, о которых вы могли даже не догадываться! Hello World! Экранирование символов — это очень интересное и необходимое техническое решение. Необходимость в экранировании символов сыграло важную роль в истории всей индустрии программирования. В этой статье мы поговорим о том, что такое экранирование символов, почему появилась потребность их экранировать, и как экранирование символов реализовано в Java. В статье будут приведены примеры и интересные факты, связанные с темой экранирования символов. Приятного чтения! Вся информация в компьютерной системе представлена в виде текста, который на более низком уровне представлен байтами. Когда мы пишем письмо или сообщение, мы набираем текст, который будет понятен для человека. Когда же мы пишем код в IDE, мы набираем текст, который сможет разобрать компилятор. В Java текст можно представить в виде типа String , для обозначения данных которого используются управляющие символы — парные кавычки.
String str = "Hello World!";
С текстом “Hello World!” никаких проблем не возникает, но что если этот же текст необходимо выделить прямой речью? Воспользовавшись правилами грамматики становится ясно, что текст “Hello World!”, помимо управляющих символов от типа String , требуется поместить в кавычки прямой речи.
String str = "Java said, "Hello World!"";
Такой вариант будет нерабочим, т.к. компилятор попросту не поймет в какой же момент заканчивается инициализация переменной str . Для решения этой и подобных ей проблем было придумано экранировать символы , то есть менять управляющие символы на так называемые управляющие последовательности, известные также, как escape-последовательности . Ниже приведен список действующих escape-последовательностей java для использования в строках. \t — Символ табуляции (в java – эквивалент четырех пробелов); \b — Символ возврата в тексте на один шаг назад или удаление одного символа в строке (backspace); \n — Символ перехода на новую строку; \r — Символ возврата каретки; \f — Прогон страницы к началу следующей страницы; \’ — Символ одинарной кавычки; \» — Символ двойной кавычки; \\ — Символ обратной косой черты ( \ ). Теперь давайте выделим прямую речь в нашей фразе так, чтобы компилятор смог без проблем разобрать написанное.
String str = "Java said, \"Hello World!\"";
Таким образом, написанный текст понятен и компилятору и человеку, если содержимое переменной str вывести на экран. Мы разобрались с тем, что такое экранирование символов и для чего оно нужно. И даже экранировали символ двойной кавычки! Приступим к разбору оставшихся escape-последовательностей.

Символ табуляции в строке обозначается escape-последовательностью \t и является аналогом четырех пробелов. Однако, если длина строки, состоящая из четырех пробелов будет равна длине четырех символов, то длина строки с символом табуляции будет равна одному. Символ табуляции часто используется для построения таблиц или псевдографических элементов интерфейса, т.к. это удобнее записи четырех пробелов. Ниже пример псевдографического интерфейса. Среди всех escape-последовательностей символ \b пожалуй самый интересный, ведь он позволяет нам удалить последний символ в строке вывода, подобно, если бы мы стирали его нажатием клавиши backspace .
System.out.print("2 + 2 = 5"); // На экране отображается 2 + 2 = 5 System.out.print("\b");// На экране отображается 2 + 2 = System.out.print("4");// На экране отображается 2 + 2 = 4
Символы \n и \r имеют общую историю — рассмотрим их вместе. С символом переноса строки \n вы могли встречаться ранее. Например, если метод println() выводит информацию так, что следующий вывод будет с новой строки, то метод print() не выполняет переноса строки после вывода, но если добавить в конец вывода символ \n , то перенос строки будет выполнен.
System.out.print("Следующий вывод будет с новой строки\n"); System.out.println("Следующий вывод будет с новой строки");
Символ возврата каретки \r позволяет нам вернуть курсор к началу строки вывода и отображать новую информацию так, как будто ранее в этой строке ничего не было.
System.out.print("Текст который необходимо переписать.");//На экране отображается "Текст который необходимо переписать." System.out.print('\r');//На экране пусто System.out.print("Новый текст.");//На экране отображается "Новый текст."

На самом деле возврат каретки берет свое начало еще со времен, когда текст печатали на печатных машинках. Чтобы выполнить перенос строки, необходимо было передвинуть каретку и опустить рычажок (части механизма печатной машинки), после чего будет выполнен перенос строки. Если же рычажок не опустить, то можно было продолжать печатать в той же строке. Что мы и наблюдаем, выводя символ \r . В связи с этим, когда программист хотел выполнить перенос строки, он, по привычке, в конце вывода выполнял последовательность из символов \r\n . Когда эра печатных машинок подошла к концу, появилось поколение программистов, которые все еще использовали эту последовательность, хотя сами за печатной машинкой никогда не работали. Они часто забывали в каком порядке необходимо было выполнить данную последовательность — \r\n или \n\r . Тогда им на помощь пришло проверочное слово return , где наглядно виден порядок вывода этих символов. Однако позже при разработке программного обеспечения на первые версии Windows, после MS-DOS, программисты вынуждены были использовать последовательность \r\n . Сейчас же об этом можно не беспокоиться и для переноса строки использовать только символ \n . Вернемся еще раз в прошлое, примерно в 80-е годы. Именно тогда символ прогона страницы \f к началу следующей страницы имел популярность. В то время были большие линейные принтеры, для работы с которыми необходимо было писать программный код, содержащий что и как принтер должен напечатать. И для обозначения, что текст необходимо начать печатать с новой страницы использовался символ \f . В наше же время этот символ давно утратил свою актуальность, и навряд ли вы с ним когда-либо столкнетесь. Размеры линейного принтера весьма внушительны. С символами \’ и \\ все точно также как и с экранированием двойной кавычки, пример был в начале статьи. Экранировать одинарную кавычку придется, например, для инициализации типа char одинарной кавычкой.
char ch = '\'';
Экранировать символ обратной косой черты необходимо для указания, что последующий символ не будет являтся частью escape-последовательности.
System.out.println("\\n - escape-последовательность переноса строки"); // Вывод: \n - escape-последовательность переноса строки
На практике же экранировать обратный слеш чаще приходится при работе с путями:
System.out.println("It's Java string: \"C:\\Program Files\\Java\\jdk1.7.0\\bin\""); // Вывод: It's Java string: "C:\Program Files\Java\jdk1.7.0\bin"
Я подчеркнул, что данные escape-последовательности употребляются в строках (строковых литералах), т.к. остальная их часть используется для описания регулярных выражений класса Pattern и не относится к теме данной статьи. Здесь можно ознакомиться со списком всех escape-последовательностей класса Pattern . Однако, стоит отметить, что регулярные выражения в том виде, в котором они есть сейчас, невозможно представить без использования escape-последовательностей не только в java, но и в других популярных языках программирования, например, PHP. В java экранирование символов используется и в форматировании строк. Например, задавая формат строки для отображения символа процента, необходимо продублировать символ процента – %% , иначе получим ошибку, а IDE будет предлагать дописать процент.
System.out.printf("Процент жирности молока : %d%%", 10); // Процент жирности молока : 10%
На этом статья подходит концу. Надеюсь, вы узнали много нового об экранировании символов, и о том, как применять это на практике. Экранирование символов присуще многим языкам программирования. В java, как и в других си-подобных языках данная технология реализована почти одинаково. Поэтому, полученные вами знания из этой статьи вполне могут пригодится не только в java. Спасибо за внимание и удачи в обучении!
Как вывести кавычки в java
Создайте регулярное выражение для поиска строк в двойных кавычках «. » .
Важно, что строки должны поддерживать экранирование с помощью обратного слеша, по аналогии со строками JavaScript. Например, кавычки могут быть вставлены как \» , новая строка как \n , а сам обратный слеш как \\ .
let str = "Как вот \"здесь\".";
В частности, обратите внимание: двойная кавычка после обратного слеша \» не оканчивает строку.
Поэтому мы должны искать от одной кавычки до другой, игнорируя встречающиеся экранированные кавычки.
В этом и состоит основная сложность задачи, которая без этого условия была бы элементарной.
Примеры подходящих строк:
.. "test me" .. .. "Скажи \"Привет\"!" . (строка с экранированными кавычками) .. "\\" .. (внутри двойной слеш) .. "\\ \"" .. (внутри двойной слеш и экранированная кавычка)
В JavaScript приходится удваивать обратные слеши, чтобы добавлять их в строку, как здесь:
let str = ' .. "test me" .. "Скажи \\"Привет\\"!" .. "\\\\ \\"" .. '; // эта строка в памяти: alert(str); // .. "test me" .. "Скажи \"Привет\"!" .. "\\ \"" ..
- Сначала ищем открывающую кавычку «
- Затем, если есть обратный слеш \\ (удвоение обратного слеша – техническое, потому что это спец.символ, на самом деле там один обратный слеш), то после него также подойдёт любой символ (точка).
- Иначе берём любой символ, кроме кавычек (которые будут означать конец строки) и обратного слеша (чтобы предотвратить одинокие обратные слеши, сам по себе единственный обратный слеш не нужен, он должен экранировать какой-то символ) [^»\\]
- …И так далее, до закрывающей кавычки.
let regexp = /"(\\.|[^"\\])*"/g; let str = ' .. "test me" .. "Скажи \\"Привет\\"!" .. "\\\\ \\"" .. '; alert( str.match(regexp) ); // "test me","Скажи \"Привет\"!","\\ \""
