Функции замены в строках
Общие функции строк и функции поиска в строках описаны отдельно.
overlay
Заменяет часть строки input на другую строку replace, начиная с индексa offset, основанного на 1.
Синтаксис
Параметры
s: строковый тип String.replace: строковый тип String.offset: целочисленный тип Int (основанный на 1). Еслиoffsetотрицательный, он считается от конца строкиs.length: необязательный. Целочисленный тип Int.lengthуказывает длину фрагмента в входной строкеs, который будет заменен. Еслиlengthне указан, количество байт, удаленных изs, равно длинеreplace; в противном случае удаляютсяlengthбайт.
Возвращаемое значение
- Значение типа String.
Пример
Результат:
Результат:
overlayUTF8
Заменяет часть строки input на другую строку replace, начиная с индексa offset, основанного на 1.
Предполагается, что строка содержит текст с кодировкой 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. Не ASCII символы в s функцией не изменяются.
Синтаксис
Пример
Результат:
from и to имеют разные длины:
Результат:
translateUTF8
Как translate, но предполагает, что s, from и to являются строками с кодировкой UTF-8.
Синтаксис
Параметры
Возвращаемое значение
- Значение типа String.
Примеры
Запрос:
printf
Функция printf форматирует заданную строку со значениями (строки, целые числа, числа с плавающей запятой и т.д.), перечисленными в аргументах, аналогично функции printf в C++. Строка формата может содержать спецификаторы формата, начинающиеся с символа %. Все, что не входит в % и следующий спецификатор формата, считается литеральным текстом и копируется в вывод без изменений. Литеральный символ % может быть экранирован как %%.
Синтаксис
Пример
Запрос: