Функции замены строк
Общие строковые функции и функции для поиска в строках описаны отдельно.
Приведённая ниже документация сгенерирована из системной таблицы system.functions.
format
Добавлено в: v20.1
Форматирует строку шаблона pattern с использованием значений (строк, целых чисел и т.д.), перечисленных в аргументах, аналогично форматированию в Python.
Строка шаблона может содержать поля подстановки, заключённые в фигурные скобки {}.
Всё, что не заключено в скобки, рассматривается как буквальный текст и копируется в вывод без изменений.
Символ фигурной скобки можно экранировать двумя скобками: {{ и }}.
Имена полей могут быть числами (начиная с нуля) или быть пустыми (тогда им неявно присваиваются последовательно возрастающие номера).
Синтаксис
Аргументы
pattern— Форматная строка, содержащая заполнители.Strings0[, s1, ...]— Одно или несколько значений для подстановки в шаблон.Any
Возвращаемое значение
Возвращает форматированную строку. String
Примеры
Нумерованные заполнители
Неявная нумерация
overlay
Добавлена в: v24.9
Заменяет часть строки 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
Заменяет часть строки 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
Функция printf форматирует заданную строку, подставляя значения (строки, целые числа, числа с плавающей запятой и т. д.), перечисленные в аргументах, аналогично функции printf в C++.
Строка формата может содержать спецификаторы формата, начинающиеся с символа %.
Все, что не является символом % и следующим за ним спецификатором формата, считается литеральным текстом и копируется в вывод без изменений.
Символ % как литерал можно экранировать с помощью %%.
Синтаксис
Аргументы
format— Форматная строка со спецификаторами%.Stringsub1, sub2, ...— Необязательный параметр. Ноль или более значений для подстановки в форматную строку.Any
Возвращаемое значение
Возвращает отформатированную строку. String
Примеры
Форматирование в стиле C++
regexpQuoteMeta
Введена в версии v20.1
Добавляет обратный слеш перед следующими символами, которые имеют специальное значение в регулярных выражениях: \0, \\, |, (, ), ^, $, ., [, ], ?, *, +, {, :, -.
Эта реализация незначительно отличается от re2::RE2::QuoteMeta.
Она экранирует нулевой байт как \0 вместо \x00 и экранирует только необходимые символы.
Синтаксис
Аргументы
s— Входная строка, содержащая символы, подлежащие экранированию в регулярных выражениях (regex).String
Возвращаемое значение
Возвращает строку, в которой экранированы специальные символы регулярных выражений (regex). String
Примеры
Экранирование спец��альных символов регулярных выражений (regex)
replaceAll
Появилась в версии: v1.1
Заменяет все вхождения подстроки pattern в haystack строкой replacement.
Синтаксис
Псевдонимы: replace
Аргументы
haystack— входная строка, в которой выполняется поиск.Stringpattern— подстрока, которую нужно найти и заменить.const Stringreplacement— строка, которой будет заменена подстрокаpattern.const String
Возвращаемое значение
Возвращает строку, в которой все вхождения pattern заменены. String
Примеры
Замена всех вхождений
replaceOne
Добавлена в: v1.1
Заменяет первое вхождение подстроки pattern в haystack строкой replacement.
Синтаксис
Аргументы
haystack— входная строка, в которой выполняется поиск.Stringpattern— подстрока для поиска и замены.const Stringreplacement— строка, которой будет заменена найденная подстрока.const String
Возвращаемое значение
Возвращает строку, в которой первое вхождение подстроки заменено. String
Примеры
Замена первого вхождения
replaceRegexpAll
Введена в версии v1.1
Аналог функции replaceRegexpOne, но заменяет все вхождения шаблона.
В качестве исключения, если регулярное выражение сработало на пустой подстроке, замена выполняется не более одного раза.
Синтаксис
Псевдонимы: REGEXP_REPLACE
Аргументы
haystack— Входная строка, в которой выполняется поиск.Stringpattern— Шаблон регулярного выражения для поиска.const Stringreplacement— Строка, заменяющая найденный шаблон, может содержать подстановки.const String
Возвращаемое значение
Возвращает строку, в которой все совпадения с регулярным выражением заменены. String
Примеры
Заменить каждый символ на его удвоенную версию
Пример замены пустой подстроки
replaceRegexpOne
Введено в: v1.1
Заменяет первое вхождение подстроки в haystack, совпадающей с регулярным выражением pattern (в синтаксисе re2), строкой replacement.
replacement может содержать подстановки \0-\9.
Подстановки \1-\9 соответствуют 1-й–9-й захватывающим группам (подсовпадениям), подстановка \0 соответствует полному совпадению.
Чтобы использовать буквальный символ \ в строках pattern или replacement, экранируйте его с помощью \.
Также имейте в виду, что строковые литералы требуют дополнительного экранирования.
Синтаксис
Аргументы
haystack— Входная строка, в которой выполняется поиск.Stringpattern— Шаблон регулярного выражения для поиска.const Stringreplacement— Строка, на которую заменяется совпадение с шаблоном, может содержать подстановки.const String
Возвращаемое значение
Возвращает строку, в которой первая подстрока, соответствующая регулярному выражению, заменена. String
Примеры
Преобразование дат из формата ISO в американский формат
Копирование строки десять раз
translate
Впервые появилась в: v22.7
Заменяет символы в строке 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
Аналог translate, но предполагает, что s, from и to — строки в кодировке UTF-8.
Синтаксис
Аргументы
s— входная строка в кодировке UTF-8 для преобразования.Stringfrom— константная строка UTF-8, содержащая заменяемые символы.const Stringto— константная строка UTF-8, содержащая символы замены.const String
Возвращаемое значение
Возвращает значение типа данных String. String
Примеры
Преобразование символов UTF-8