Перейти к основному содержимому
Перейти к основному содержимому

Функции для замены в строках

Общие функции для строк и функции для поиска в строках описаны отдельно.

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.

Синтаксис

Параметры

  • s: Строка типа String.
  • from: Строка типа String.
  • to: Строка типа String.

Возвращаемое значение

  • Значение типа String.

Примеры

Запрос:

printf

Функция printf форматирует данную строку со значениями (строки, целые числа, числа с плавающей запятой и т. д.), перечисленными в аргументах, аналогично функции printf в C++. Строка формата может содержать спецификаторы формата, начинающиеся с символа %. Все, что не содержится в % и следующем спецификаторе формата, считается литеральным текстом и копируется в вывод без изменений. Литеральный символ % можно экранировать с помощью %%.

Синтаксис

Пример

Запрос: