String представляет неизменяемую последовательность символов в кодировке UTF-8.
String обычно создается с помощью строкового литерала, заключая UTF-8 символы в двойные кавычки:
"hello world"
Обратный слеш может быть использован для обозначения специальных символов:
"\"" # двойная кавычка
"\\" # обратный слеш
"\e" # управляющая последовательность
"\f" # смена страницы
"\n" # новая строка
"\r" # возврат каретки
"\t" # табуляция
"\v" # вертикальная табуляция
Вы можете использовать обратный слеш и до трех цифр после него для обозначения символов в восьмеричной системе счисления:
"\101" # == "A"
"\123" # == "S"
"\12" # == "\n"
"\1" # code point 1
Вы можете использовать обратный слеш, u и четыре шестнадцатеричных символа для обозначения Unicode-последовательности:
"\u0041" # == "A"
Или вы можете использовать фигурные скобки и шесть шестнадцатеричных символов (от 0 до 10FFFF):
"\u{41}" # == "A"
"\u{1F52E}" # == "🔮"
Строка может занимать несколько строк кода:
"hello
world" # то же, что и "hello\n world"
Обратите внимание, что в последнем примере в результирующей строке содержатся пробелы и переводы строк. Чтобы избежать этого, разбейте исходную строку на несколько строк, объединяя их обратным слешем:
"hello " \
"world, " \
"no newlines" # то же, что и "hello world, no newlines"
Или вы можете вставлять обратныый слеш в качестве перевода строки во внутрь строкового литерала:
"hello \
world, \
no newlines" # то же, что и "hello world, no newlines"
В этом случае, пробелы в начале строки не попадут в результирующую строку.
Если вам нужно написать строку, имеющую много двойных кавычек, скобок и тому подобных символов, то вы можете использовать альтернативные литералы:
# Поддерживает двойные кавычки и вложенные круглые скобки
%(hello ("world")) # то же, что и "hello (\"world\")"
# Поддерживает двойные кавычки и вложенные квадратные скобки
%[hello ["world"]] # то же, что и "hello [\"world\"]"
# Поддерживает двойные кавычки и вложенные фигурные скобки
%{hello {"world"}} # то же, что и "hello {\"world\"}"
# Поддерживает двойные кавычки и вложенные треугольные скобки
%<hello <"world">> # то же, что и "hello <\"world\">"
Вы можете использовать специальный "heredoc" синтаксис для создания строки:
<<-XML
<parent>
<child />
</parent>
XML
"Heredoc" начинается с <<-IDENT
, где IDENT
- это идентификатор, последовательность букв и цифр, которая должна начинаться с буквы. "heredoc" заканчивается в строке, которая начинается с IDENT
, игнорируя пробелы в начале этой строки.
Пробелы в начале строки удаляются из контента "heredoc" в соответствии с количеством пробельных символов, которые имеет последний IDENT
. Например:
# то же, что и "Hello\n world"
<<-STRING
Hello
world
STRING
# то же, что и " Hello\n world"
<<-STRING
Hello
world
STRING
Для создания строки со встроенными выражениями, вы можете использовать интерполяцию:
a = 1
b = 2
"sum = #{a + b}" # "sum = 3"
Вызывается метод Object#to_s(IO)
на каждом выражении внутри #{...}
.