Строка
Литерал строки (String) представляет собой строку в кодировке 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
}
Экранированные последовательности
Специальные символы в интерпретированных литералах, такие как символы новой строки, могут быть выражены с помощью экранированных последовательностей.
| Представление | Описание |
|---|---|
|
Символ Unicode из 24 бит (до 6 цифр) |
|
Перевод строки |
|
Возврат каретки |
|
Табуляция |
|
Обратная косая черта |
|
Пустой символ |
|
Двойная кавычка |
|
Одиночная кавычка |
|
Фигурная скобка |
Шаблоны
Интерпретированную строку можно шаблонизировать. Для этого имя переменной заключается в двойные фигурные скобки: {{a}}. Значение переменной вставляется в строку на этой позиции во время выполнения. Поддерживаются только переменные. Переменная должна быть строкой.
| Чтобы вставить путь из события, сначала присвойте его переменной. |
Чтобы вставить двойные фигурные скобки в строку, их можно экранировать с помощью обратной косой черты: \{{...}}.
Многострочные литералы
Интерпретированные строковые литералы можно записать в несколько строк, добавив обратную косую черту перед символом новой строки. Символ новой строки и любые пробелы в начале следующей строки не будут включены в литерал.
Операции над строками
К операциям над строками относятся:
-
Конкатенация (с помощью оператора
+) -
Повторение строки заданное число раз (с помощью оператора
*)
Для проверки типа и валидации строки используйте функции string, is_string и rv_is_utf8.
Для приведения к строке используйте функцию to_string.
Была ли полезна эта страница?