Функции для замены в строках
Общие функции для строк и функции для поиска в строках описаны отдельно.
overlay
Заменяет часть строки input
на другую строку replace
, начиная с индекса на основе 1 offset
.
Синтаксис
Параметры
s
: Строка типа String.replace
: Строка типа String.offset
: Целочисленный тип Int (с 1). Еслиoffset
отрицательный, то он считается от конца строкиs
.length
: Необязательный. Целочисленный тип Int.length
указывает длину фрагмента внутри входной строкиs
, который нужно заменить. Еслиlength
не указан, количество байтов, удаляемых изs
, равно длинеreplace
; иначе удаляютсяlength
байтов.
Возвращаемое значение
- Значение типа String.
Пример
Результат:
Результат:
overlayUTF8
Заменяет часть строки input
на другую строку replace
, начиная с индекса на основе 1 offset
.
Предполагается, что строка содержит корректный текст в кодировке UTF-8. Если это предположение нарушается, исключение не будет выброшено, и результат будет неопределенным.
Синтаксис
Параметры
s
: Строка типа String.replace
: Строка типа String.offset
: Целочисленный тип Int (с 1). Еслиoffset
отрицательный, то он считается от конца входной строкиs
.length
: Необязательный. Целочисленный тип Int.length
указывает длину фрагмента внутри входной строкиs
, который нужно заменить. Еслиlength
не указан, то количество удаляемых символов изs
равно длинеreplace
; иначе удаляютсяlength
символов.
Возвращаемое значение
- Значение типа String.
Пример
Результат:
replaceOne
Заменяет первое вхождение подстроки pattern
в haystack
на строку replacement
.
Синтаксис
replaceAll
Заменяет все вхождения подстроки pattern
в haystack
на строку replacement
.
Синтаксис
Псевдоним: replace
.
replaceRegexpOne
Заменяет первое вхождение подстроки, соответствующей регулярному выражению pattern
(в синтаксисе re2), в haystack
на строку replacement
.
replacement
может содержать подстановки \0-\9
.
Подстановки \1-\9
соответствуют 1-й по 9-й захватывающей группе (подшаблону), а подстановка \0
соответствует полному совпадению.
Чтобы использовать символ \
в строках pattern
или replacement
, нужно экранировать его с помощью \
.
Также не забывайте, что строковые литералы требуют дополнительного экранирования.
Синтаксис
Пример
Преобразование ISO-даты в американский формат:
Результат:
Копирование строки десять раз:
Результат:
replaceRegexpAll
Как replaceRegexpOne
, но заменяет все вхождения паттерна.
Псевдоним: REGEXP_REPLACE
.
Пример
Результат:
В качестве исключения, если регулярное выражение сработало на пустой подстроке, то замена не производится более одного раза, например:
Результат:
regexpQuoteMeta
Добавляет обратный слэш перед этими символами, которые имеют специальное значение в регулярных выражениях: \0
, \\
, |
, (
, )
, ^
, $
, .
, [
, ]
, ?
, *
, +
, {
, :
, -
.
Эта реализация немного отличается от re2::RE2::QuoteMeta. Она экранирует нулевой байт как \0
, а не \x00
, и экранирует только необходимые символы.
Для получения дополнительной информации смотрите RE2
Синтаксис
format
Форматирует строку pattern
со значениями (строки, целые числа и т. д.), перечисленными в аргументах, аналогично форматированию в Python. Строка шаблона может содержать поля замещения, окруженные фигурными скобками {}
. Все, что не содержится в фигурных скобках, считается литеральным текстом и копируется в вывод без изменений. Литеральный знак фигурной скобки можно экранировать двумя фигурными скобками: {{ '{{' }}
и {{ '}}' }}
. Имена полей могут быть числами (начиная с нуля) или пустыми (тогда они неявно получают монотонно увеличивающиеся номера).
Синтаксис
Пример
С неявными числами:
translate
Заменяет символы в строке s
с использованием однозначного сопоставления символов, определенного строками from
и to
.
from
и to
должны быть постоянными ASCII-строками.
Если from
и to
имеют равные размеры, каждое вхождение 1-го символа first
в s
заменяется на 1-й символ to
, 2-й символ first
в s
заменяется на 2-й символ to
и т. д.
Если from
содержит больше символов, чем to
, все вхождения символов на конце from
, для которых нет соответствующего символа в to
, удаляются из s
.
Некорректные символы в s
не изменяются функцией.
Синтаксис
Пример
Результат:
Аргументы from
и to
имеют разную длину:
Результат:
translateUTF8
Как translate, но предполагает, что s
, from
и to
являются строками в кодировке UTF-8.
Синтаксис
Параметры
Возвращаемое значение
- Значение типа String.
Примеры
Запрос:
printf
Функция printf
форматирует данную строку со значениями (строки, целые числа, числа с плавающей запятой и т. д.), перечисленными в аргументах, аналогично функции printf в C++. Строка формата может содержать спецификаторы формата, начинающиеся с символа %
. Все, что не содержится в %
и следующем спецификаторе формата, считается литеральным текстом и копируется в вывод без изменений. Литеральный символ %
можно экранировать с помощью %%
.
Синтаксис
Пример
Запрос: