Управляющие символы \n \t и прочие
Время от времени в коде вы можете встретить символы типа \n , \r , \t и прочие.
Например, посмотрите что будет, если исполнить следующий код:
print('раз\tдва\tтри\nuno\tdos\ttres')
# раз два три
# uno dos tres
Можно заметить, что вместо \t у нас появился отступ, а вместо \n переход на новую строку.
Символы вроде \t и \n — это управляющие символы, они управляют выводом, например модифицируют его.
Вот некоторые управляющие символы и их смысл:
\n | (newline) перевод каретки на следующую строку |
\r | (return) перевод каретки на в начало текущей строки |
\t | (tab) табуляция (отступ, красная строка) |
\b | (backspace) перевод каретки на один символ назад |
На заметку
В качестве разделителя строк в разных системах могут использоваться разные последовательности. Например, в Windows строки разделяются при помощи \r\n , а в Unix при помощи \n .
Таблица символов ЮНИКОДА для сайтов
На выдаче в сниппете и Title могут отображаться специализированные символы, знаки, буквы и цифры. Использовать их можно для оригинального оформления SEO-блоков. Только следует учитывать, что применение символов и необычных знаков должно быть продуманным и обоснованным. Иначе сниппет или тайтл может выглядеть нелепо, совершенно не справляясь с поставленными задачами. Поисковые системы по-разному реагируют на использование символов, смайликов, стрелочек, необычных знаков. Рекомендуем протестировать их, чтобы убедиться в правильности отображения в выдаче.
Как использовать Unicode символы
- Найти нужный значок;
- Скопировать его;
- Вставить в нужное место в тексте.
Наиболее популярные символы
Чаще всего для выдачи применяют символы рубля и валют, серп и молот, а также инь и янь.
Российский рубль: U+20BD (в Юникоде) и ₽ (в HTML-коде)
Нумерация, буквы, числа в Юникод
- ⓿ ❶ ❷ ❸ ❹ ❺ ❻ ❼ ❽ ❾ ❿ ⓫ ⓬ ⓭ ⓮ ⓯ ⓰ ⓱ ⓲ ⓳ ⓴
- ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇
- ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳
- Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ Ⓙ Ⓚ Ⓛ Ⓜ Ⓝ Ⓞ Ⓟ Ⓠ Ⓡ Ⓢ Ⓣ Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ
- ⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛
- ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ ⓪
- ⒜ ⒝ ⒞ ⒟ ⒠ ⒡ ⒢ ⒣ ⒤ ⒥ ⒦ ⒧ ⒨ ⒩ ⒪ ⒫ ⒬ ⒭ ⒮ ⒯ ⒰ ⒱ ⒲ ⒳ ⒴ ⒵
Колбочки, стрелочки, квадратики
- ◜ ◝ ◞ ◟ ◠ ◡
- ◰ ◱ ◲ ◳ ◴ ◵ ◶ ◷
- ▖ ▗ ▘ ▙ ▚ ▛ ▜ ▝ ▞ ▟ ■
- ◸ ◹ ◺ ◻ ◼ ◽ ◾ ◿
- ► ▻ ▼ ▽ ▾ ▿ ◀ ◁ ◂ ▻
- □ ▢ ▣ ▪ ▫ ▬ ▭ ▮ ▯ ▰ ▱ ▤ ▥ ▦ ▧ ▨ ▩
- ▲ △ ▴ ▵ ▶ ▷ ▸ ▹ ► ▻
- ◢ ◣ ◤ ◥
- ◆ ◇ ◈ ◉ ◊ ○ ◌ ◍ ◎
- ● ◐ ◑ ◒ ◓ ◔ ◕
- ◧ ◨ ◩ ◪ ◫
- ◖ ◗ ◘ ◙ ◚ ◛
- ◦ ◬ ◭ ◮ ◯
Крестики, черточки, палочки в UNICODE
- ▁ ▂ ▃ ▄ ▅ ▆ ▇ █
- ▌ ▍ ▎ ▏ ▐
- ▀ ▉ ▊ ▋
- ─ ━ │ ┃
- └ ┕ ┖ ┗ ┘ ┙ ┚ ┛
- ┄ ┅ ┆ ┇ ┈ ┉ ┊ ┋
- ░ ▒ ▓ ▔ ▕
- ┌ ┍ ┎ ┏ ┐ ┑ ┒ ┓
- ╭ ╮ ╯ ╰ ╱ ╲ ╳
- ├ ┝ ┞ ┟ ┠ ┡ ┢ ┣ ┤ ┥ ┦ ┧ ┨ ┩ ┪ ┫
- ╴ ╵ ╶ ╷ ╸ ╹ ╺ ╻ ╼ ╽ ╾ ╿
- ┴ ┵ ┶ ┷ ┸ ┹ ┺ ┻
- ┬ ┭ ┮ ┯ ┰ ┱ ┲ ┳
- ┼ ┽ ┾ ┿ ╀ ╁ ╂ ╃ ╄ ╅ ╆ ╇ ╈ ╉ ╊ ╋
- ╤ ╥ ╦ ╧ ╨ ╩ ╪ ╫ ╬
- ╘ ╙ ╚ ╛ ╜ ╝
- ╌ ╍ ╎ ╏ ═
- ║ ╞ ╟ ╠ ╡ ╢ ╣
- ╒ ╓ ╔ ╕ ╖ ╗
Фигурные символы
Используются специальные символы:
- ⟨ ⟩ ⟪ ⟫ ⟰ ⟱
- ❍ ❏ ❐ ❑ ❒
- ✔ ✕ ✖ ✗ ✘
- ☀ ☁ ☂ ☃ ☄ ★
- ☢ ☣ ☯ ☮ ☣ ☬ ☪
- ☆ ☇ ☈ ☉ ☊ ☋ ☌ ☍
- ☡ ☢ ☣ ☤ ☥ ☧ ☨ ☩ ☪
- ☎ ☏ ☐ ☑ ☒
- ⟦ ⟧ ⟲ ⟳ ⟴ ⟵
- ➘ ➙ ➚ ➛ ➜ ➝ ➞ ➟ ➠ ➡
- ☓ ☔ ☕ ☖ ☗ ☘ ☙
- ☚ ☛ ☜ ☝ ☞ ☟ ☠ ☫ ☬
- ✆ ✇ ✈ ✉ ✌ ✍ ✎ ✏ ✐ ✑
- ➲ ➳ ➴ ➵ ➶ ➷ ➸
- ☰ ☱ ☲ ☳ ☴ ☵ ☶ ☷
- ☭ ☮ ☯ ♮ ♯ ♰ ♱
- ➱ ➢ ➣ ➤ ➥ ➦ ➧ ➨ ➩ ➪ ➫ ➬ ➭ ➮ ➯ ➔
- ❁ ❂ ❃ ❄ ❅ ❆ ❇ ❈ ❉ ❊ ❋
- ✁ ✂ ✃ ✄ ✒ ✓ ☦
- ✫ ✬ ✭ ✮ ✯ ✰
- ✝ ✞ ✟ ✠ ✡✢ ✣ ✤ ✥
- ✡ 〄 ♨ ☸ ⌘
- ✱ ✲ ✳ ✴ ✵ ✶ ✷ ✸ ✹ ✺ ✻ ✼ ✽ ❀
- ✙ ✚ ✛ ✾ ✿ ✜ ✦ ✧ ✩ ✪
- ➹ ➺ ➻ ➼ ➽ ➾
- ❖ ❡ ❢ ❣ ❤ ❥ ❦ ❧ ❘ ❙ ❚ ❛ ❜ ❝ ❞ ➿ ⟠ ⟡
Римские числа
Шахматные фигуры и ноты
Используются следующие символы:
- ♕ ♖ ♗ ♘ ♙ ♚ ♛ ♜ ♝ ♞ ♟ ♠
- ♩ ♪ ♫ ♬ ♭ ♮ ♯
- ♡ ♢ ♣ ♤ ♥ ♦ ♧
Математические символы и обозначения в физике по UNICODE
Греческие буквы и другие алфавиты
ᴀ ᴁ ᴂ ᴃ ᴄ ᴅ ᴆ ᴇ ᴈ ᴉ ᴊ ᴋ ᴌ ᴍ ᴎ ᴏ ᴐ ᴑ ᴒ ᴓ ᴔ ᴕ ᴖ ᴗ ᴘ ᴙ ᴚ ᴛ ᴜ ᴝ ᴞ ᴟ ᴠ ᴡ ᴢ ᴣ ᴤ ᴥ ᴦ ᴧ ᴨ ᴩ ᴪ ᴫ ᴬ ᴭ ᴮ ᴯ ᴰ ᴱ ᴲ ᴳ ᴴ ᴵ ᴶ ᴷ ᴸ ᴹ ᴺ ᴻ ᴼ ᴽ ᴾ ᴿ ᵀ ᵁ ᵂ ᵃ ᵄ ᵅ ᵆ ᵇ ᵈ ᵉ ᵊ ᵋ ᵌ ᵍ ᵎ ᵏ ᵐ ᵑ ᵒ ᵓ ᵔ ᵕ ᵖ ᵗ ᵘ ᵙ ᵚ ᵛ ᵜ ᵝ ᵞ ᵟ ᵠ ᵡ ᵢ ᵣ ᵤ ᵥ ᵦ ᵧ ᵨ ᵩ ᵪ ᵫ ᵬ ᵭ ᵮ ᵯ ᵰ ᵱ ᵲ ᵳ ᵴ ᵵ ᵶ ᵷ ᵸ ᵹ ᵺ ᵻ ᵼ ᵽ ᵾ ᵿ ᶀ ᶁ ᶂ ᶃ ᶄ ᶅ ᶆ ᶇ ᶈ ᶉ ᶊ ᶋ ᶌ ᶍ ᶎ ᶏ ᶐ ᶑ ᶒ ᶓ ᶔ ᶕ ᶖ ᶗ ᶘ ᶙ ᶚ ᶛ ᶜ ᶝ ᶞ ᶟ ᶠ ᶡ ᶢ ᶣ ᶤ ᶥ ᶦ ᶧ ᶨ ᶩ ᶪ ᶫ ᶬ ᶭ ᶮ ᶯ ᶰ ᶱ ᶲ ᶳ ᶴ ᶵ ᶶ ᶷ ᶸ ᶹ ᶺ ᶻ ᶼ ᶽ ᶾ ᶿ ῲ ῳ ῴ ῶ ῷ Ὸ Ό Ὼ Ώ ῼ ⍳ ⍴ ⍵ ⍶ ⍷ ⍸ ⍹ ⍺
Перевод строки
Символ U+000A известен, как символ Перевода строки LF (Line Feed) или Символ новой строки NL (New Line). Он был разработан для обозначения конца строки текста и перехода на новую строку в текстовых документах, компьютерных терминалах и системах обработки текста. Перевод строки проворачивает барабан принтера на одну строку. На видеотерминале перемещает курсор вниз и, если необходимо, прокручивает изображение.
В контексте компьютерных терминалов и текстовых редакторов, символ перевода строки используется для перемещения курсора на начало следующей строки. Он является стандартным способом обозначения конца строки в UNIX-подобных операционных системах, включая Linux и macOS.
Однако стоит отметить, что в операционных системах семейства Windows для обозначения конца строки используется комбинация символов ␍ Возврат каретки (Carriage Return) и ␊ Перевод строки (Line Feed), представленная как «\r\n»
В первых телетайпах, работавших со скоростью в единицы бод, разделение управляющих символов на CR Возврат каретки и LF Перевод строки скрывало тот факт, что отведённая далеко вправо каретка могла и не успеть к появлению очередного символа, так как понятий «драйвер» и «буферизация» ещё не было.
В азбуке Морзе использовался разделитель −•••− мнемоника BT (Break Text).
Как и остальные управляющие символы, этот символ не имеет визуального представления и не занимает места на экране или в печати. В разделе
Пиктограммы управляющих символов 2400–243F есть два отдельных символа, представляющих графическое изображение символа U+000A: символ перевода строки в виде аббревиатуры LF (Line Feed) — ␊ и символ новой строки в виде аббревиатуры NL (New Line) —  .
Символ является одним из восьми управляющих символов, обязательного наличия которых требует стандарт POSIX:
- \0 ␀Нулевой символ ;
- \a ␇Звуковой сигнал ;
- \b ␈Возврат на шаг ;
- \t ␉Горизонтальная табуляция ;
- \n ␊Перевод строки ;
- \v ␋Вертикальная табуляция ;
- \f ␌Смена страницы ;
- \r ␍Возврат каретки .
Символ «Перевод строки» входит в подраздел «Управляющие символы C0» раздела «Основная латиница» и был утвержден как часть Юникода версии 1.1 в 1993 г.
Этот текст также доступен на следующих языках: English;
Синонимы
новая строка, разделитель строк.
Строки — Основы JavaScript
С первыми двумя все понятно, это точно строки, мы уже работали с подобными конструкциями и говорили, что строки – это наборы символов.
Любой одиночный символ в кавычках — это строка. Пустая строка » — это тоже строка. То есть строкой мы считаем все, что находится внутри кавычек, даже если это пробел, один символ или вообще отсутствие символов.
Ранее в уроках мы записывали строки в одинарных кавычках, но это не единственный способ. Можно использовать и двойные:
// Стандарт кодирования airbnb, рекомендует // использовать, по возможности, одинарные console.log('Dracarys!');
Представьте, что вы хотите напечатать строчку Dragon’s mother. Апостроф перед буквой s — это такой же символ, как одинарная кавычка. Попробуем:
console.log('Dragon's mother'); // Uncaught SyntaxError: missing ) after argument list
Такая программа не будет работать. С точки зрения JavaScript, строка началась с одинарной кавычки, а потом закончилась после буквы n. Дальше были символы s mother без кавычек — значит, это не строка. А потом была одна открывающая строку кавычка, которая так и не закрылась: ‘); . Этот код синтаксически некорректен (это видно даже по тому, как подсвечен код).
Здесь нам помогут двойные кавычки. Такой вариант программы отработает корректно:
console.log("Dragon's mother");
Теперь интерпретатор знает, что строка началась с двойной кавычки — значит, и закончиться должна на двойной кавычке. А одинарная кавычка внутри стала частью строки.
Верно и обратное. Если внутри строки мы хотим использовать двойные кавычки, то саму строку надо делать в одинарных. Причем количество кавычек внутри самой строки не важно.
А что, если мы хотим создать такую строку:
В ней есть и одинарные и двойные кавычки. Как быть в этой ситуации? Нужно каким-то образом сказать интерпретатору считать каждую кавычку частью строки, а не началом или концом строки.
Для этого экранируют специальные символы. В нашем случае тот символ, который является признаком конца и начала строки, это либо одинарная кавычка, либо двойная, в зависимости от ситуации. Для экранирования используется обратный слеш \ .
// Экранируется только ", так как в этой ситуации // двойные кавычки имеют специальное значение console.log("Dragon's mother said \"No\""); // => Dragon's mother said "No"
Посмотрите внимательно: нам нужно было добавить \ для двойных кавычек, но не для одинарной (апостроф), потому что сама строка создана с двойными кавычками. Если бы строка создавалась с одинарными кавычками, то символ экранирования нужен был бы перед апострофом, но не перед двойными кавычками:
// Обратный слеш `\` не выводится, если после него идет обычный символ, // а не специальный console.log("Death is \so terribly final, while life is full of possibilities"); // => Death is so terribly final, while life is full of possibilities
А что, если нужно вывести сам обратный слеш? Точно так же, как и любой другой специальный символ, его надо экранировать самим собой.
console.log("\\"); // => \
Вопрос на самопроверку, что выведет этот код?
console.log("\\ \\ \\\\ \\\ \'\"");
Экранирующие последовательности
Мы хотим показать диалог Матери Драконов со своим ребенком:
Если вывести на экран строку с таким текстом:
console.log('- Are you hungry?- Aaaarrrgh!');
то получится так:
Не то, что мы хотели. Строки расположены друг за другом, а не одна ниже другой. Нам нужно как-то сказать интерпретатору «нажать на энтер» — сделать перевод строки после вопросительного знака. Это можно сделать, используя символ перевода строки: \n .
console.log('- Are you hungry?\n- Aaaarrrgh!');
\n — это специальный символ. В литературе его часто обозначают как LF (Line Feed). Возможно вы сейчас подумали, что это опечатка, ведь здесь мы видим два символа \ и n , но это не так. С точки зрения компьютера — это один невидимый символ перевода строки. Доказательство:
// Мы это не изучали, но вы должны знать правду // Ниже код, который возвращает длину строки 'a'.length; // 1 '\n'.length; // 1 . '\n\n'.length; // 2 .
Почему так сделано? \n — всего лишь способ записать символ перевода строки, но сам перевод строки по своему смыслу – это один символ, правда, невидимый. Именно поэтому и возникла такая задача. Нужно было как-то представить его на клавиатуре. А поскольку количество знаков на клавиатуре ограничено и отдано под самые важные, то все специальные символы реализуются в виде таких обозначений.
Символ перевода строки не является чем-то специфичным для программирования. Все, кто хоть раз печатал на компьютере, использовал перевод строки, нажимая на Enter. Во многих редакторах есть опция, позволяющая включить отображение невидимых символов — с ее помощью можно понять, где они находятся (хотя это всего лишь схематичное отображение, у этих символов нет графического представления, они невидимые):
Устройство, которое выводит соответствующий текст, учитывает этот символ. Например, принтер при встрече с LF протаскивает бумагу вверх на одну строку, а текстовый редактор переносит весь последующий текст ниже, также на одну строку.
\n — это пример экранирующей последовательности (escape sequence). Их еще называют управляющими конструкциями. Хотя таких символов не один десяток, в программировании часто встречаются всего несколько. Кроме перевода строки, к таким символам относятся табуляция (разрыв, получаемый при нажатии на кнопку Tab) и возврат каретки (только в Windows). Нам, программистам, часто нужно использовать перевод строки \n для правильного форматирования текста.
console.log('Gregor Clegane\nDunsen\nPolliver\nChiswyck');
На экран выведется:
Обратите внимание на следующие моменты:
- Не имеет значения, что стоит перед или после \n : символ или пустая строка. Перевод будет обнаружен и выполнен в любом случае.
- Помните, что строка может содержать один символ или вообще ноль символов. А еще строка может содержать только \n . Проанализируйте следующий пример:
console.log('\n'); console.log('Dunsen'); // => // => // => Dunsen
Здесь мы сначала выводим строку «перевод строки», а потом делаем вывод обыкновенной строки. Почему перед строкой Dunsen появилось две пустые строки, а не одна? Дело в том, что console.log() при выводе значения автоматически добавляет в конец символ перевода строки. Таким образом, один перевод строки мы указали явно, передав этот символ экранирующей последовательности аргументом в функцию, а второй перевод строки добавлен самой функцией автоматически. Еще пример кода:
console.log('Polliver'); console.log('Gregor Clegane'); console.log(); console.log('Chiswyck'); console.log('\n'); console.log('Dunsen'); // => Polliver // => Gregor Clegane // => // => Chiswyck // => // => // => Dunsen
console.log('Joffrey loves using \\n'); // => Joffrey loves using \n
Небольшое, но важное замечание про Windows. В Windows для перевода строк по умолчанию используется \r\n . Такая комбинация хорошо работает только в Windows, но создает проблемы при переносе в другие системы (например, когда в команде разработчиков есть пользователи как Windows, так и Linux). Дело в том, что последовательность \r\n имеет разную трактовку в зависимости от выбранной кодировки (рассматривается позже). По этой причине, в среде разработчиков принято всегда использовать \n без \r , так как LF всегда трактуется одинаково и отлично работает в любой системе. Не забудьте настроить ваш редактор на использование \n .
Конкатенация
В веб-разработке программы постоянно оперируют строками. Все, что мы видим на сайтах, так или иначе представлено в виде текста. Этот текст чаще всего динамический, то есть полученный из разных частей, которые соединяются вместе. Операция соединения строк в программировании называется конкатенацией.
// Оператор такой же, как и при сложении чисел // но здесь он имеет другой смысл (семантику) console.log('Dragon' + 'stone'); // => Dragonstone
Склеивание строк всегда происходит в том же порядке, в котором записаны операнды. Левый операнд становится левой частью строки, а правый — правой.
Вот еще несколько примеров:
console.log('Kings' + 'wood'); // => Kingswood // Обратный порядок слов console.log('road' + 'Kings'); // => roadKings // Конкатенировать можно абсолютно любые строки console.log("King's" + 'Landing'); // => King'sLanding
Как видите, строки можно склеивать, даже если они записаны с разными кавычками.
В последнем примере название города получилось с ошибкой: King’s Landing нужно писать через пробел. Но в наших начальных строках не было пробелов, а пробелы в самом коде слева и справа от символа + не имеют значения, потому что они не являются частью строк.
Выхода из этой ситуации два:
// Оба способа равнозначны // Ставим пробел в левой части console.log("King's " + 'Landing'); // => King's Landing // Ставим пробел в правой части console.log("King's" + ' Landing'); // => King's Landing
Пробел — такой же символ, как и другие. Чем больше пробелов, тем шире отступы:
console.log("King's " + ' Landing'); // => King's Landing console.log("King's " + ' Landing'); // => King's Landing
Дополнительные материалы
- REPL для экспериментов
- Шаблонные строки
- История перевода строки
- Что такое кодировки?
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Об обучении на Хекслете
- Статья «Как учиться и справляться с негативными мыслями»
- Статья «Ловушки обучения»
- Статья «Сложные простые задачи по программированию»
- Урок «Как эффективно учиться на Хекслете»
- Вебинар « Как самостоятельно учиться »
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях: