Функции для работы со строками позволяют анализировать, преобразовывать и манипулировать текстовыми данными.
str.len
Определяет длину строки в символах.
Сигнатура: str.len(str string) int
Аргументы: str
— строка, длину которой нужно определить.
Результат: Целое число, равное количеству символов в строке.
Пример использования:
$str = "Какая-то строка"
$len = str.len($str) // $len будет содержать 15
str.lower
Преобразует все символы строки в нижний регистр.
Сигнатура: str.lower(str string) string
Аргументы: str
— строка, которую необходимо преобразовать.
Результат: Строка, все символы которой находятся в нижнем регистре.
Пример использования:
$str = "СтРоКа"
$lower = str.lower($str) // $lower будет содержать "строка"
str.upper
Преобразует все символы строки в верхний регистр.
Сигнатура: str.upper(str string) string
Аргументы: str
— строка, которую необходимо преобразовать.
Результат: Строка, все символы которой находятся в верхнем регистре.
Пример использования:
$str = "СтРоКа"
$upper = str.upper($str) // $lower будет содержать "СТРОКА"
str.ucfirst
Преобразует первый символ строки в верхний регистр.
Сигнатура: str.ucfirst(str string) string
Аргументы: str
— строка, первый символ которой необходимо преобразовать.
Результат: Строка с первым символом в верхнем регистре.
Пример использования:
$str = str.ucfirst("строка") // $str будет содержать "Строка"
str.lcfirst
Преобразует первый символ строки в нижний регистр.
Сигнатура: str.lcfirst(str string) string
Аргументы: str
— строка, первый символ которой необходимо преобразовать.
Результат: Строка с первым символом в нижнем регистре.
Пример использования:
$str = str.lcfirst("Строка") // $str будет содержать "строка"
str.letter
Возвращает символ строки по указанной позиции.
Сигнатура: str.letter(str string, index int) string
Аргументы:
str
— строка, символ которой требуется получить.index
— позиция символа в строке (начиная с 0). Если отрицательная, отсчет начинается с конца строки.Результат: Строка, содержащая символ по указанной позиции, или пустая строка, если символа с такой позицией не существует.
Пример использования:
$str = "Слово"
$firstLetter = str.letter($str, 0) // Первая буква
$lastLetter = str.letter($str, -1) // Последняя буква
str.concat
Объединяет две строки в одну.
Сигнатура: str.concat(strings ...string) string
Аргументы: strings
— строки для объединения.
Результат: Новая строка, состоящая из первой строки, к которой справа добавлена вторая.
Пример использования:
$str1 = "один"
$str2 = "два"
$str = str.concat($str1, $str2) // $str будет содержать "одиндва"
str.format
Форматирует строку, подставляя значения в указанные плейсхолдеры.
Сигнатура: str.format(format string, values… any) string
Аргументы:
format
— строка формата состоит из нуля или более директив: обычные символы (за исключением %), которые просто выводятся без изменения, и спецификаторы преобразования, каждый из которых требует передачи своего параметра. Спецификатор преобразования соответствует прототипу: %[argnum$][flags][width][.precision]specifier
.values
— значения, которые будут подставлены в формат.Номер аргумента (argnum): Целое число, за которым следует знак $
, чтобы указать, какой числовой аргумент обрабатывать при преобразовании.
Флаги: Флаги изменяют поведение форматирования:
-
— выравнивание по левому краю (по умолчанию — по правому).+
— всегда отображать знак числа (+ или -).0
— дополнение числа нулями слева.'символ
— дополнение указанным символом. Ширина: Указывает минимальное количество символов для вывода значения. Если значение короче, оно будет дополнено пробелами или указанным символом.
Точность: Точность в форматировании строк указывается после .
и определяет, сколько символов будет выведено или как будет округлено значение.
f
, e
, E
, F
) точность задает количество цифр после десятичной точки. По умолчанию используется 6 знаков после запятой.g
, G
, h
, H
точность определяет максимальное количество значащих цифр.s
) точность ограничивает максимальное количество символов, которые будут выведены.Если после точки не указано значение точности, считается, что точность равна 0.
Также можно использовать символ *
вместо конкретного числа для задания точности. В этом случае значение точности передается как дополнительный аргумент перед основным значением.
Спецификаторы: Определяют тип и формат выводимого значения:
%
— символ процента. Аргументы не требуются.b
— аргумент рассматривается как целое число и печатается в бинарном представлении.c
— аргумент рассматривается как целое число и печатается как символ из таблицы ASCII с соответствующим кодом.d
— аргумент рассматривается как целое число и печатается как целое число со знаком.e
— аргумент считается за число в научной нотации (т. е. 1.2e+2).E
— аргумент аналогичен спецификатору e, но с заглавным символом (т. е. 1.2E+2).f
— аргумент считается за число с плавающей точкой (с учетом локали).F
— аргумент считается за число с плавающей точкой (без учета локали).g
— Общий формат. Пусть P равно точности, если точность не равна нулю, 6, если точность не задали, или 1, если точность равна 0. Тогда, если преобразование со стилем «E» будет иметь показатель степени X: Если P > X ≥ −4, преобразование будет в стиле «f» и точность будет P - (X + 1). Иначе преобразование будет в стиле «e» и точность будет P - 1.G
— аргумент аналогичен спецификатору g, но использует спецификаторы E и f.h
— аргумент аналогичен спецификатору g, но использует спецификатор F.H
— аргумент аналогичен спецификатору g, но использует спецификаторы E и F.o
— аргумент рассматривается как целое число и печатается в восьмеричном представлении.s
— аргумент рассматривается и печатается как строка.u
— аргумент рассматривается как целое число и печатается как беззнаковое целое число.x
— аргумент рассматривается как целое число и печатается в шестнадцатеричном представлении (буквы будут в нижнем регистре).X
— аргумент рассматривается как целое число и печатается в шестнадцатеричном представлении (буквы будут в верхнем регистре).Спецификатор
c
игнорирует спецификаторы преобразования дополнения и ширины. Попытка использовать комбинацию спецификаторов строки и ширины с кодировками, которые требуют больше одного байта на символ, иногда дает неожиданные результаты.
Возвращаемое значение: string
— отформатированная строка.
Пример использования:
str.format("test: %s", "Привет")
// Вернет: "test: Привет"
str.format("%b, %x, %u", 10, 20, 30)
// Вернет: "1010, 14, 30"
codec.urlEncode
Преобразует строку в формат, безопасный для передачи в интернете. Кодирует символы, не входящие в разрешенный набор, в escape-последовательности согласно RFC 3986.
Escape-последовательность — это способ записать символ, который нельзя вставить в ссылку напрямую.
Например, !
заменяется на %21
. Так строка Привет!
превращается в %D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%21
.
Сигнатура: codec.urlEncode(str string) string
Аргументы: str
— строка, которую нужно закодировать.
Результат: Строка, в которой все запрещенные символы заменены на escape-последовательности в формате %XX
.
Пример использования:
$encoded = codec.urlEncode("Привет!")
// $encoded будет содержать строку "%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%21"
codec.urlDecode
Преобразует строку, закодированную согласно RFC 3986, в обычный текст.
Сигнатура: codec.urlDecode(str string) string
Аргументы: str
— строка с кодами специальных символов (escape-последовательностями).
Результат: Обычная строка, полученная после декодирования.
Пример использования:
$decoded = codec.urlDecode("%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%21")
// $decoded будет содержать строку "Привет!"
$decoded = codec.urlDecode("%%")
// $decoded будет содержать "%%"
str.split
Разбивает строку на части, используя separator в качестве разделителя.
Сигнатура: str.split(str string, separator string = "", limit int = 0) List
Аргументы:
str
— строка для разделения.separator
— разделитель. Если задана пустая строка, строка разбивается на отдельные символы.limit
— необязательный параметр, равный максимальному количеству частей, на которые будет разбита строка:
str
.Результат: список подстрок, на которые была разбита строка.
Пример использования:
$letters = str.split("абвгде") // $letters будет содержать список букв слова
$words = str.split("один два три", " ") // $words будет содержать список слов
$words = str.split("один два три", " ", 2) // $words будет содержать ["один", "два три"]
$words = str.split("один два три", " ", -1) // $words будет содержать ["один", "два"]
str.first
Возвращает символ строки по указанной позиции с начала строки.
Сигнатура: str.first(str string, index int = 0) string
Аргументы:
str
— строка, из которой нужно получить символ;index
— целое число, определяющее позицию символа (начиная с 0). Отрицательные значения приводятся к положительным. По умолчанию — 0.Результат: Строка с одним символом, соответствующим позиции. Если позиция выходит за пределы строки, возвращается пустая строка.
Пример использования:
$str = "Слово"
$firstLetter = str.first($str) // Первая буква
$secondLetter = str.first($str, 1) // Вторая буква
str.last
Возвращает символ строки по указанной позиции с конца.
Сигнатура: str.last(str string, index int = 0) string
Аргументы:
str
— строка, из которой нужно получить символ;index
— целое число, определяющее позицию символа с конца (начиная с 0). Отрицательные значения приводятся к положительным. По умолчанию — 0.Результат: Строка с одним символом, соответствующим позиции. Если позиция выходит за пределы строки, возвращается пустая строка.
Пример использования:
$str = "Слово"
$lastLetter = str.last($str) // Последняя буква
$penultLetter = str.last($str, 1) // Предпоследняя буква
str.sub
Возвращает часть строки, начиная с указанной позиции и заданной длины.
Сигнатура: str.sub(str string, offset int, length int = nil) string
Аргументы:
str
— исходная строка;offset
— позиция начала подстроки:
length
— длина подстроки:
Результат: Строка, содержащая подстроку, либо пустая строка, если заданные параметры выходят за границы исходной строки.
Пример использования:
$sub = str.sub("abcdef", 1) // $sub равен bcdef
$sub = str.sub("abcdef", 1, 3) // $sub равен bcd
$sub = str.sub("abcdef", 0, 4) // $sub равен abcd
$sub = str.sub("abcdef", 0, 8) // $sub равен abcdef
$sub = str.sub("abcdef", -1, 1) // $sub равен f
$sub = str.sub("abcdef", -1) // $sub равен f
$sub = str.sub("abcdef", -2) // $sub равен ef
$sub = str.sub("abcdef", -3, 1) // $sub равен d
$sub = str.sub("abcdef", 0, -1) // $sub равен abcde
$sub = str.sub("abcdef", 2, -1) // $sub равен cde
$sub = str.sub("abcdef", 4, -4) // $sub равен пустой строке
$sub = str.sub("abcdef", -3, -1) // $sub равен de
str.join
бъединяет элементы списка, кортежа или словаря в строку с указанным разделителем.
Сигнатура: str.join(arr Collection, separator string = "") string
Аргументы:
arr
— коллекция элементов для объединения (список, кортеж или ассоциативный массив);separator
— строка-разделитель между элементами. По умолчанию — пустая строка.Результат: Новая строка, составленная из элементов коллекции, разделённых указанной строкой.
Пример использования:
$str = str.join([1, 2, 3, 4, 5], "-") // $str будет содержать "1-2-3-4-5"
$str = str.join(("a", "b", "c")) // $str будет содержать "abc"
$str = str.join({"a": "один", "b": "два"}, " + ") // $str будет содержать "один + два"
$str = str.join(["одно"], "/") // $str будет содержать "одно"
$str = str.join([], "/") // $str будет содержать ""
str.replace
Ищет все вхождения подстроки в строке и заменяет их на указанную строку.
Сигнатура: str.replace(str string, search string, replace string) string
Аргументы:
str
— исходная строка, в которой выполняется замена;search
— подстрока, которую нужно заменить;replace
— строка, на которую нужно заменить найденные вхождения.Результат: Новая строка, в которой все вхождения search
заменены на replace
.
Пример использования:
$str = str.replace("мама мыла раму", "рам", "Ан") // $str содержит "мама мыла Анну"
str.rreplace
Ищет все вхождения, соответствующие регулярному выражению, и заменяет их на заданную строку.
Сигнатура: str.rreplace(str string, pattern string, replace string) string
Аргументы:
str
— строка, в которой выполняется замена;pattern
— регулярное выражение, задающее шаблон поиска;replace
— строка, на которую будут заменены найденные соответствия.Результат: Новая строка, в которой все соответствия pattern
заменены на replace
.
Используются регулярные выражения, совместимые с Perl (PCRE).
Документация PCRE, онлайн-редактор.
Пример использования:
$str = str.rreplace("раз 1, два 2, три 3", "/[0-9]/", "") // $str содержит "раз, два, три"
str.match
Проверяет, соответствует ли строка заданному регулярному выражению.
Сигнатура: str.match(str string, pattern string) bool
Аргументы:
str
— строка для проверки;pattern
— регулярное выражение для сопоставления.Результат: Возвращает true
, если строка соответствует выражению, и false
— если не соответствует.
Используются регулярные выражения, совместимые с Perl (PCRE). Документация PCRE, онлайн-редактор.
Пример использования:
$isIntNumber = str.match("1.234", "/^[0-9]+$/") // $isIntNumber будет равен false
$isIntNumber = str.match("1234", "/^[0-9]+$/") // $isIntNumber будет равен true
str.distance
Вычисляет степень сходства двух строк как число от 0 до 1.
Сигнатура: str.distance(str1 string, str2 string) number
Аргументы:
str1
— первая строка для сравнения;str2
— вторая строка для сравнения.Результат: Число от 0 до 1:
Функция использует метрику Word Error Rate (WER).
Пример использования:
$d = str.distance("", "abc") // $d равен 0
$d = str.distance("Да", "да") // $d равен 1
$d = str.distance("корыто", "открыто") // $d равен 0.571
$d = str.distance("Да, верно", "таверна") // $d равен 0.625
$d = str.distance("жутко косые бананы", "жуй кокосы, ешь бананы") // $d равен 0.714
$d = str.distance("сошел с ума от раны", "Пошел он в пусурманы") // $d равен 0.45
$d = str.distance("ёж", "дезоксирибонуклеиновая кислота") // $d равен 0
str.first
Возвращает символ строки по указанной позиции с начала строки.
Сигнатура: str.first(str string, index int = 0) string
Аргументы:
str
— строка, из которой нужно получить символ;index
— целое число, определяющее позицию символа (начиная с 0). Отрицательные значения приводятся к положительным. По умолчанию — 0.Результат: Строка с одним символом, соответствующим позиции. Если позиция выходит за пределы строки, возвращается пустая строка.
Пример использования:
$str = "Слово"
$firstLetter = str.first($str) // Первая буква
$secondLetter = str.first($str, 1) // Вторая буква
str.last
Возвращает символ строки по указанной позиции с конца.
Сигнатура: str.last(str string, index int = 0) string
Аргументы:
str
— строка, из которой нужно получить символ;index
— целое число, определяющее позицию символа с конца (начиная с 0). Отрицательные значения приводятся к положительным. По умолчанию — 0.Результат: Строка с одним символом, соответствующим позиции. Если позиция выходит за пределы строки, возвращается пустая строка.
Пример использования:
$str = "Слово"
$lastLetter = str.last($str) // Последняя буква
$penultLetter = str.last($str, 1) // Предпоследняя буква
str.sub
Возвращает часть строки, начиная с указанной позиции и заданной длины.
Сигнатура: str.sub(str string, offset int, length int = nil) string
Аргументы:
str
— исходная строка;offset
— позиция начала подстроки:
length
— длина подстроки:
Результат: Строка, содержащая подстроку, либо пустая строка, если заданные параметры выходят за границы исходной строки.
Пример использования:
$sub = str.sub("abcdef", 1) // $sub равен bcdef
$sub = str.sub("abcdef", 1, 3) // $sub равен bcd
$sub = str.sub("abcdef", 0, 4) // $sub равен abcd
$sub = str.sub("abcdef", 0, 8) // $sub равен abcdef
$sub = str.sub("abcdef", -1, 1) // $sub равен f
$sub = str.sub("abcdef", -1) // $sub равен f
$sub = str.sub("abcdef", -2) // $sub равен ef
$sub = str.sub("abcdef", -3, 1) // $sub равен d
$sub = str.sub("abcdef", 0, -1) // $sub равен abcde
$sub = str.sub("abcdef", 2, -1) // $sub равен cde
$sub = str.sub("abcdef", 4, -4) // $sub равен пустой строке
$sub = str.sub("abcdef", -3, -1) // $sub равен de
str.join
бъединяет элементы списка, кортежа или словаря в строку с указанным разделителем.
Сигнатура: str.join(arr Collection, separator string = "") string
Аргументы:
arr
— коллекция элементов для объединения (список, кортеж или ассоциативный массив);separator
— строка-разделитель между элементами. По умолчанию — пустая строка.Результат: Новая строка, составленная из элементов коллекции, разделённых указанной строкой.
Пример использования:
$str = str.join([1, 2, 3, 4, 5], "-") // $str будет содержать "1-2-3-4-5"
$str = str.join(("a", "b", "c")) // $str будет содержать "abc"
$str = str.join({"a": "один", "b": "два"}, " + ") // $str будет содержать "один + два"
$str = str.join(["одно"], "/") // $str будет содержать "одно"
$str = str.join([], "/") // $str будет содержать ""
str.replace
Ищет все вхождения подстроки в строке и заменяет их на указанную строку.
Сигнатура: str.replace(str string, search string, replace string) string
Аргументы:
str
— исходная строка, в которой выполняется замена;search
— подстрока, которую нужно заменить;replace
— строка, на которую нужно заменить найденные вхождения.Результат: Новая строка, в которой все вхождения search
заменены на replace
.
Пример использования:
$str = str.replace("мама мыла раму", "рам", "Ан") // $str содержит "мама мыла Анну"
str.rreplace
Ищет все вхождения, соответствующие регулярному выражению, и заменяет их на заданную строку.
Сигнатура: str.rreplace(str string, pattern string, replace string) string
Аргументы:
str
— строка, в которой выполняется замена;pattern
— регулярное выражение, задающее шаблон поиска;replace
— строка, на которую будут заменены найденные соответствия.Результат: Новая строка, в которой все соответствия pattern
заменены на replace
.
Используются регулярные выражения, совместимые с Perl (PCRE).
Документация PCRE, онлайн-редактор.
Пример использования:
$str = str.rreplace("раз 1, два 2, три 3", "/[0-9]/", "") // $str содержит "раз, два, три"
str.match
Проверяет, соответствует ли строка заданному регулярному выражению.
Сигнатура: str.match(str string, pattern string) bool
Аргументы:
str
— строка для проверки;pattern
— регулярное выражение для сопоставления.Результат: Возвращает true
, если строка соответствует выражению, и false
— если не соответствует.
Используются регулярные выражения, совместимые с Perl (PCRE). Документация PCRE, онлайн-редактор.
Пример использования:
$isIntNumber = str.match("1.234", "/^[0-9]+$/") // $isIntNumber будет равен false
$isIntNumber = str.match("1234", "/^[0-9]+$/") // $isIntNumber будет равен true
str.distance
Вычисляет степень сходства двух строк как число от 0 до 1.
Сигнатура: str.distance(str1 string, str2 string) number
Аргументы:
str1
— первая строка для сравнения;str2
— вторая строка для сравнения.Результат: Число от 0 до 1:
Функция использует метрику Word Error Rate (WER).
Пример использования:
$d = str.distance("", "abc") // $d равен 0
$d = str.distance("Да", "да") // $d равен 1
$d = str.distance("корыто", "открыто") // $d равен 0.571
$d = str.distance("Да, верно", "таверна") // $d равен 0.625
$d = str.distance("жутко косые бананы", "жуй кокосы, ешь бананы") // $d равен 0.714
$d = str.distance("сошел с ума от раны", "Пошел он в пусурманы") // $d равен 0.45
$d = str.distance("ёж", "дезоксирибонуклеиновая кислота") // $d равен 0