EnotPRO Logo EnotPRO

string

Макрос !{string} предоставляет набор функций для работы со строками: поиск, извлечение, замена, форматирование и многое другое.

Где используется:

  • Обработка текста от пользователя
  • Форматирование вывода
  • Извлечение данных из строк

💡 Совет: Макрос удобен для парсинга команд, проверки форматов, обрезки длинных сообщений.

Синтаксис

!{string.функция|
  параметр1: значение1;
  параметр2: значение2;
}

Оглавление функций

Функция Описание
contains Проверка вхождения подстроки
index Поиск позиции подстроки
cut Вырезание части строки
reverse Разворот строки
truncate Обрезка строки до длины
case Изменение регистра
split Разделение строки на массив
join Объединение массива в строку
trim Удаление символов по краям
replace Замена подстроки
count Подсчёт вхождений
repeat Повторение строки

string.contains

Проверяет вхождение строки (или символов) в текст.

Параметры

Параметр Тип Обязательный Описание

text Строка ✅ Да Исходная строка search Строка ✅ Да Искомое значение type Строка ❌ Нет Тип поиска (substring, chars, prefix, suffix)

Типы поиска

Тип Описание Пример (text="Hello")

substring (по умолчанию) Поиск подстроки "ell" → true chars Поиск любого из символов "abc" → false (нет a,b,c) prefix Проверка начала строки "Hel" → true suffix Проверка конца строки "llo" → true

Примеры

Поиск подстроки

!{string.contains|text: "Hello world"; search: "world";}

Результат: true


Поиск символов

!{string.contains|text: "Hello"; type: chars; search: "abc";}

Результат: false


Проверка префикса

!{string.contains|text: "prefix-test"; type: prefix; search: "prefix";}

Результат: true


Проверка суффикса

!{string.contains|text: "test-suffix"; type: suffix; search: "suffix";}

Результат: true

string.index

Находит позицию первого или последнего вхождения подстроки.

Параметры

Параметр Тип Обязательный Описание
text Строка ✅ Да Исходная строка
search Строка ✅ Да Искомая подстрока
type Строка ❌ Нет Тип поиска (first, last)
mode Строка ❌ Нет Режим индексации (utf8, byte)

Режимы индексации

Режим Описание
utf8 (по умолчанию) По символам UTF-8
byte По байтам

Примеры

Поиск первого вхождения

!{string.index|text: "Hello world"; search: "o";}

**Результат: 4 (символ 'o' на позиции 4)


Поиск последнего вхождения

!{string.index|text: "Hello world"; search: "o"; type: last;}

Результат: 7


Поиск с UTF-8 индексацией

!{string.index|text: "Привет мир"; search: "мир";}

Результат: 7


Поиск с байтовой индексацией

!{string.index|text: "Привет мир"; mode: byte; search: "мир";}

Результат: 13 (т.к. "Привет " занимает 13 байт в UTF-8)

⚠️ Примечание: Индексация начинается с 0. Если подстрока не найдена, возвращается -1.

string.cut

Вырезает часть строки (диапазон или конкретный символ).

Параметры*

Параметр Тип Обязательный Описание
text Строка ✅ Да Исходная строка
start Число ❌ Нет Начальный индекс (включительно)
end Число ❌ Нет Конечный индекс (не включительно)
index Число ❌ Нет Индекс конкретного символа
mode Строка ❌ Нет Режим индексации (utf8, byte)

Примеры

Получение символа по индексу

!{string.cut|text: "Привет мир"; index: 2; mode: utf8;}

Результат: "и"


Вырезание с начального индекса до конца

!{string.cut|text: "Привет мир"; start: 7; mode: utf8;}

Результат: "мир"


Вырезание с начала до указанного индекса

!{string.cut|text: "Привет мир"; end: 6; mode: utf8;}

Результат: "Привет"


Вырезание части между индексами

!{string.cut|text: "Привет мир"; start: 0; end: 6; mode: utf8;}

Результат: "Привет"

⚠️ Примечание: Если указан index, параметры start и end игнорируются.

string.reverse

Разворачивает строку в обратном порядке.

Параметры

Параметр Тип Обязательный Описание
text Строка ✅ Да Исходная строка

!{string.reverse|text: "Привет";}

Результат: "тевирП"

string.truncate

Обрезает строку до указанной длины с добавлением окончания.

Параметры

Параметр Тип Обязательный Описание
text Строка ✅ Да Исходная строка
length Число ✅ Да Максимальная длина
suffix Строка ❌ Нет Окончание обрезанной строки (по умолчанию "...")
type Строка ❌ Нет Тип обрезки (word, symbol)
mode Строка ❌ Нет Режим индексации (utf8, byte)

Типы обрезки

Тип Описание
word (по умолчанию) Обрезка по последнему полному слову
symbol Обрезка строго по символам

Примеры

Обрезка по словам с UTF-8 индексацией (по умолчанию)

!{string.truncate|text: "Очень длинная строка текста"; length: 12;}

Результат: "Очень длинная..."


Обрезка по символам с UTF-8 индексацией

!{string.truncate|text: "Очень длинная строка текста"; length: 12; type: symbol;}

Результат: "Очень длинна..."


Обрезка по байтам

!{string.truncate|text: "Очень длинная строка текста"; length: 12; type: symbol; mode: byte;}

Результат: "Оче..." (т.к. кириллические символы занимают по 2 байта)


С изменённым окончанием

!{string.truncate|text: "Очень длинная строка текста"; length: 12; suffix: "…";}

Результат: "Очень длинная…"

string.case

Изменяет регистр строки.

Параметры

Параметр Тип Обязательный Описание
text Строка ✅ Да Исходная строка
type Строка ❌ Нет Тип преобразования (lower, upper)

Типы преобразования

Тип Описание
lower (по умолчанию) Нижний регистр
upper Верхний регистр

Пример

!{string.case|text: "Строка для преобразования"; type: upper;}

Результат: "СТРОКА ДЛЯ ПРЕОБРАЗОВАНИЯ"

string.split

Разделяет строку на массив подстрок по указанному разделителю.

Параметры

Параметр Тип Обязательный Описание
text Строка ✅ Да Исходная строка
separator Строка ❌ Нет Разделитель (по умолчанию — пробельные символы)

Возвращает

Массив строк в формате JSON.

Примеры

Разделение по запятой

!{string.split|text: "red,green,blue"; separator: ,;}

Результат: ["red", "green", "blue"]


Разделение по пробелам (separator не указан)

!{string.split|text: "The quick brown fox";}

Результат: ["The", "quick", "brown", "fox"]


Разделение по нескольким символам

!{string.split|text: "1->2->3"; separator: "->";}

Результат: ["1", "2", "3"]

string.join

Объединяет массив строк через указанный разделитель.

Параметры

Параметр Тип Обязательный Описание
list Массив ✅ Да Массив строк в формате JSON
separator Строка ❌ Нет Разделитель (по умолчанию — пустая строка)

Пример

!{string.join|list: ["строка1", "строка2", "строка3"]; separator: ", ";}

Результат: "строка1, строка2, строка3"

string.trim

Удаляет указанные символы с начала и/или конца строки.

Параметры

Параметр Тип Обязательный Описание
text Строка ✅ Да Исходная строка
type Строка ❌ Нет Тип удаления (both, left, right, space)
search Строка ❌ Нет* Символы для удаления
  • Обязателен для типов both, left, right.

Типы удаления

Тип Описание
both (по умолчанию) Удаление с обоих концов
left Удаление только слева
right Удаление только справа
space Удаление пробельных символов с обоих концов

Примеры

Удаление пробелов !{string.trim|text: " Строка с пробелами "; type: space;}

Результат: "Строка с пробелами"


Удаление конкретных символов слева

!{string.trim|text: "***Текст***"; type: left; search: "*";}

Результат: "Текст***"

string.replace

Заменяет подстроки в тексте.

Параметры

Параметр Тип Обязательный Описание
text Строка ✅ Да Исходная строка
old Строка ✅ Да Подстрока для замены
new Строка ✅ Да Строка замены (может быть пустой)
type Строка ❌ Нет Тип замены (first, all, count)
count Число ❌ Нет* Количество замен (для type: count)
  • Обязателен для type: count.

Типы замены

Тип Описание
first (по умолчанию) Замена только первого вхождения
all Замена всех вхождений
count Замена указанного количества вхождений

Примеры

Замена первого вхождения

!{string.replace|text: "Привет, мир! Привет!"; old: "Привет"; new: "Здравствуй";}

Результат: "Здравствуй, мир! Привет!"


Замена всех вхождений

!{string.replace|text: "Привет, мир! Привет!"; old: "Привет"; new: "Здравствуй"; type: all;}

Результат: "Здравствуй, мир! Здравствуй!"


Замена указанного количества вхождений

!{string.replace|text: "Привет, Привет, Привет!"; old: "Привет"; new: "Здравствуй"; type: count; count: 2;}

Результат: "Здравствуй, Здравствуй, Привет!"

string.count

Подсчитывает количество непересекающихся вхождений подстроки.

Параметры

Параметр Тип Обязательный Описание
text Строка ✅ Да Исходная строка
search Строка ✅ Да Искомая подстрока

Пример

!{string.count|text: "Привет, мир! Привет!"; search: "Привет";} Результат: "2"

string.repeat

Повторяет строку указанное количество раз.

Параметры

Параметр Тип Обязательный Описание
text Строка ✅ Да Исходная строка
count Число ✅ Да Количество повторов

Пример

!{string.repeat|text: "Привет!"; count: 3;}

Результат: "Привет!Привет!Привет!"

Частые ошибки и их решение

Ошибка Причина Решение
index или cut возвращает -1 Подстрока или индекс не найдены Проверьте наличие подстроки через contains
truncate обрезает слишком коротко Неверный режим mode или type Используйте type: word для обрезки по словам
split возвращает неожиданный массив Неверный разделитель Убедитесь, что разделитель точно соответствует
replace заменяет только первое вхождение Не указан type: all Добавьте type: all для замены всех вхождений \

Быстрые ответы (шпаргалка)

Проверить, содержит ли текст слово

!{string.contains|text: ${text}; search: "слово"}

Найти позицию символа

!{string.index|text: ${text}; search: "?"}

Взять первые 10 символов

!{string.cut|text: ${text}; end: 10}

Обрезать до 20 символов с "..."

!{string.truncate|text: ${text}; length: 20}

Перевести в верхний регистр

!{string.case|text: ${text}; type: upper}

Разбить строку по запятым

!{string.split|text: ${text}; separator: ","}

Удалить пробелы по краям

!{string.trim|text: ${text}; type: space}

Заменить все пробелы на подчёркивания

!{string.replace|text: ${text}; old: " "; new: "_"; type: all}

Узнать, сколько раз встречается слово

!{string.count|text: ${text}; search: "слово"}

Повторить строку 5 раз

!{string.repeat|text: "Привет"; count: 5}

© 2025 EnotPRO. Все права защищены.