Строка

Литерал строки (String) представляет собой строку в кодировке UTF-8.

Строка с символами UTF-8
"Hello, world! 🌎"

Существуют сырые и интерпретированные строковые литералы:

  • Сырые (raw) строковые литералы состоят из символов, закодированных напрямую в UTF-8, без интерпретации экранированных последовательностей. Сырые литералы предваряются символом s и заключаются в одиночные кавычки: s’Hello, world!'.

    Обратная косая черта не имеет специального значения в сырых литералах. Сырой литерал может содержать символы новой строки.

  • Интерпретированные строковые литералы представляют собой последовательности символов, заключенных в двойные кавычки: "Hello, world!".

    Текст в кавычках интерпретируется с учетом экранированных последовательностей и шаблонов. Поэтому обратная косая черта, двойные кавычки и двойные фигурные скобки должны быть экранированы.

Используйте VRL-песочницу, чтобы проверить работу программы.

Отображение экранированных символов

События отображаются в интерфейсе как JSON, поэтому двойные кавычки, обратные косые черты и символы новой строки в них экранируются автоматически.

Примеры отображения экранированных символов

Примеры строк с кавычками

Сырая строка, содержащая кавычки
s'{ "foo": "bar" }'
Интерпретированная строка, содержащая кавычки
"{ \"foo\": \"bar\" }"
Результат
"{ \"foo\": \"bar\" }"

Примеры строк с обратными косыми чертами

Исходный код
# Интерпретированный литерал, обратные косые черты экранируются.
.a = "\\currentcontrolset\\control"
# Сырой литерал, экранировать обратные косые черты не нужно.
.b = s'\currentcontrolset\control'
# Две обратные косые черты в сыром литерале интерпретируются так же, как введены.
.c = s'\\currentcontrolset\\control'

В интерфейсе, например, в карточке события, обратная косая черта отображается экранированной, то есть как две обратные косые черты.

Результат
{
   "a" = "\\currentcontrolset\\control",
   "b" = "\\currentcontrolset\\control",
   "c" = "\\\\currentcontrolset\\\\control"
}

Экранированные последовательности интерпретируются как один символ:

Исходный код
# Сырая строка.
.a = length(s'\\')
# Интерпретированная строка.
.b = length("\\")
Результат
{
   "a" = 2,
   "b" = 1
}

Экранированные последовательности

Специальные символы в интерпретированных литералах, такие как символы новой строки, могут быть выражены с помощью экранированных последовательностей.

Представление Описание

\u{7FFF}

Символ Unicode из 24 бит (до 6 цифр)

\n

Перевод строки

\r

Возврат каретки

\t

Табуляция

\\

Обратная косая черта

\0

Пустой символ

\"

Двойная кавычка

\'

Одиночная кавычка

\{

Фигурная скобка

Примеры экранированных последовательностей

Пример c пустым символом

Исходный код
"Null symbol: \0"
Результат
"Null symbol: \u0000"

Пример с экранированной одиночной кавычкой

Исходный код
"Year \'25"
Результат
"Year '25"

Шаблоны

Интерпретированную строку можно шаблонизировать. Для этого имя переменной заключается в двойные фигурные скобки: {{a}}. Значение переменной вставляется в строку на этой позиции во время выполнения. Поддерживаются только переменные. Переменная должна быть строкой.

Чтобы вставить путь из события, сначала присвойте его переменной.

Чтобы вставить двойные фигурные скобки в строку, их можно экранировать с помощью обратной косой черты: \{{...}}.

Пример шаблонизации

Шаблонизация строки
planet = "Earth"
# Шаблонизированная строка.
.a = "Hello, {{ planet }}!"
# Строка без шаблона, двойная фигурная скобка экранирована.
.b = "Hello, \{{ planet }}!"
Результат
{
    "a" = "Hello, Earth!",
    "b" = "Hello, {{ planet }}!"
}

Многострочные литералы

Интерпретированные строковые литералы можно записать в несколько строк, добавив обратную косую черту перед символом новой строки. Символ новой строки и любые пробелы в начале следующей строки не будут включены в литерал.

Пример многострочного литерала

Исходный код
.a = "Hello,
    world!"
.b = "Hello, \
    world!"
Результат
{
	"a": "Hello, \n    world!",
	"b": "Hello, world!"
}

Недопустимые символы

Недопустимые последовательности UTF-8 заменяются символом .

Операции над строками

К операциям над строками относятся:

Для проверки типа и валидации строки используйте функции string, is_string и rv_is_utf8.

Для приведения к строке используйте функцию to_string.

Была ли полезна эта страница?

Обратная связь