Функции для замены строк
Общие строковые функции и функции для поиска в строках описаны отдельно.
Приведённая ниже документация сгенерирована из системной таблицы system.functions.
format
Введена в: v20.1.0
Форматирует строку pattern с использованием значений (строки, целые числа и т. д.), указанных в аргументах, аналогично форматированию в Python.
Строка шаблона может содержать поля подстановки, заключённые в фигурные скобки {}.
Всё, что не заключено в скобки, рассматривается как буквальный текст и копируется в результат без изменений.
Символ фигурной скобки можно экранировать двойными скобками: {{ и }}.
Имена полей могут быть числами (начиная с нуля) или пустыми (в этом случае им неявно присваиваются последовательно возрастающие номера).
Синтаксис
Аргументы
pattern— Форматная строка, содержащая плейсхолдеры.Strings0[, s1, ...]— Одно или несколько значений, подставляемых в шаблон.Any
Возвращаемое значение
Возвращает отформатированную строку. String
Примеры
Нумерованные плейсхолдеры
Неявная нумерация
overlay
Введена в версии: v24.9.0
Заменяет часть строки input строкой replace, начиная с позиции offset (нумерация с 1).
Синтаксис
Аргументы
s— Входная строка.Stringreplace— Строка-замена.const Stringoffset— Целое число типаInt(отсчёт с 1). Еслиoffsetотрицательный, значение отсчитывается от конца строкиs.Intlength— Необязательный параметр. Целое число типаInt.lengthзадаёт длину фрагмента во входной строкеs, который будет заменён. Еслиlengthне указан, количество байт, удаляемых изs, равно длине строкиreplace; иначе удаляетсяlengthбайт.Int
Возвращаемое значение
Возвращает строку с выполненной заменой. String
Примеры
Базовая замена
Замена с указанием длины
overlayUTF8
Введена в: v24.9.0
Заменяет часть строки s другой строкой replace, начиная с индекса offset, отсчитываемого от 1.
Предполагается, что строка содержит корректный текст в кодировке UTF‑8.
Если это предположение нарушается, исключение не генерируется, и результат неопределён.
Синтаксис
Аргументы
s— Входная строка.Stringreplace— Строка-замена.const Stringoffset— Целое число типаInt(нумерация с 1). Еслиoffsetотрицательное, отсчёт ведётся от конца входной строкиs.(U)Int*length— Необязательный параметр. Задаёт длину фрагмента во входной строкеs, который нужно заменить. Еслиlengthне задан, количество символов, удаляемых изs, равно длинеreplace, иначе удаляетсяlengthсимволов.(U)Int*
Возвращаемое значение
Возвращает строку с выполненной заменой. String
Примеры
Замена в UTF-8
printf
Добавлена в версии: v24.8.0
Функция printf форматирует заданную строку с подстановкой значений (строки, целые числа, числа с плавающей запятой и т. д.), перечисленных в аргументах, аналогично функции printf в C++.
Строка формата может содержать спецификаторы формата, начинающиеся с символа %.
Все, что не является частью % и следующего за ним спецификатора формата, рассматривается как буквальный текст и копируется в вывод без изменений.
Символ % как литерал можно экранировать с помощью %%.
Синтаксис
Аргументы
format— Форматная строка со спецификаторами%.Stringsub1, sub2, ...— Необязательные аргументы. Ноль или более значений для подстановки в форматную строку.Any
Возвращаемое значение
Возвращает отформатированную строку. String
Примеры
Форматирование в стиле C++
regexpQuoteMeta
Впервые представлена в версии v20.1.0
Добавляет обратную косую черту перед следующими символами, имеющими специальное значение в регулярных выражениях: \0, \\, |, (, ), ^, $, ., [, ], ?, *, +, {, :, -.
Эта реализация немного отличается от re2::RE2::QuoteMeta.
Она экранирует нулевой байт как \0 вместо \x00 и экранирует только необходимые символы.
Синтаксис
Аргументы
s— входная строка, содержащая символы, подлежащие экранированию в регулярных выражениях (regex).String
Возвращаемое значение
Возвращает строку с экранированными специальными символами регулярных выражений (regex). String
Примеры
Экранирование специальных символов регулярных выражений (regex)
replaceAll
Добавлена в версии: v1.1.0
Заменяет все вхождения подстроки pattern в haystack на строку replacement.
Синтаксис
Псевдонимы: replace
Аргументы
haystack— входная строка, в которой выполняется поиск.Stringpattern— подстрока, которую нужно найти и заменить.const Stringreplacement— строка, на которую нужно заменить найденную подстроку.const String
Возвращаемое значение
Возвращает строку, в которой все вхождения подстроки заменены. String
Примеры
Замена всех вхождений
replaceOne
Добавлено в версии: v1.1.0
Заменяет первое вхождение подстроки pattern в строке haystack на строку replacement.
Синтаксис
Аргументы
haystack— Входная строка, в которой выполняется поиск.Stringpattern— Подстрока, которую нужно найти и заменить.const Stringreplacement— Строка, которой заменяется подстрока.const String
Возвращаемое значение
Возвращает строку, в которой первое вхождение подстроки заменено. String
Примеры
Замена первого вхождения
replaceRegexpAll
Появилась в версии v1.1.0
Аналогична replaceRegexpOne, но заменяет все вхождения шаблона.
В качестве исключения, если регулярное выражение сопоставилось с пустой подстрокой, замена выполняется не более одного раза.
Синтаксис
Псевдонимы: REGEXP_REPLACE
Аргументы
haystack— входная строка, в которой выполняется поиск.Stringpattern— шаблон регулярного выражения для поиска.const Stringreplacement— строка, которой заменяется найденный шаблон, может содержать подстановки.const String
Возвращаемое значение
Возвращает строку, в которой все совпадения по регулярному выражению заменены. String
Примеры
Заменить каждый символ на его удвоенную копию
Пример замены на пустую подстроку
replaceRegexpOne
Добавлено в версии: v1.1.0
Заменяет первое вхождение подстроки в haystack, совпадающей с регулярным выражением pattern (в синтаксисе re2), строкой replacement.
replacement может содержать подстановки \0-\9.
Подстановки \1-\9 соответствуют с 1-й по 9-ю группе захвата (подсовпадениям), подстановка \0 соответствует всему совпадению целиком.
Чтобы использовать буквальный символ \ в строках pattern или replacement, экранируйте его с помощью \.
Также имейте в виду, что строковые литералы требуют дополнительного экранирования.
Синтаксис
Аргументы
haystack— Входная строка, в которой выполняется поиск.Stringpattern— Шаблон регулярного выражения для поиска.const Stringreplacement— Строка для замены найденного шаблона, может содержать подстановки.const String
Возвращаемое значение
Возвращает строку, в которой первое совпадение, найденное по регулярному выражению, заменено. String
Примеры
Преобразование дат из формата ISO в американский формат
Копирование строки 10 раз
translate
Впервые появилась в: v22.7.0
Заменяет символы в строке s, используя взаимно-однозначное отображение, заданное строками from и to.
from и to должны быть константными ASCII-строками.
Если длины from и to совпадают, каждое вхождение первого символа from в s заменяется первым символом to, каждое вхождение второго символа from в s заменяется вторым символом to и т.д.
Если from содержит больше символов, чем to, все вхождения символов в конце from, для которых нет соответствующего символа в to, удаляются из s.
Символы вне ASCII в s этой функцией не изменяются.
Синтаксис
Аргументы
s— входная строка для преобразования.Stringfrom— константная ASCII-строка, содержащая заменяемые символы.const Stringto— константная ASCII-строка, содержащая символы-замены.const String
Возвращаемое значение
Возвращает строку с выполненной заменой символов. String
Примеры
Сопоставление символов
Различная длина
translateUTF8
Добавлена в: v22.7.0
Аналог translate, но предполагается, что s, from и to — строки в кодировке UTF-8.
Синтаксис
Аргументы
s— входная строка в кодировке UTF-8 для преобразования.Stringfrom— константная строка UTF-8, содержащая символы для замены.const Stringto— константная строка UTF-8, содержащая символы, на которые выполняется замена.const String
Возвращаемое значение
Возвращает значение типа данных String. String
Примеры
Преобразование символов UTF-8