# Робота зі рядками

substring() | endswith() | startswith() | contains() | len() | concat() | splitter() | lower() | upper() | strip() | capitalize() | title() | normalizePhone() | replace() | base64() | base64decode() | urlencode() | urldecode() | hmac\_hexdigest() | select\_random() | tg\_escape()

<mark style="color:red;">**ЛЕГЕНДА:**</mark>

<mark style="color:red;">**!**</mark> <mark style="color:red;"></mark><mark style="color:red;">- Обов’язкові параметри</mark>

<details>

<summary>Опис</summary>

**substring(str, n1, n2)** -  для обрізання рядка

Параметри:

<mark style="color:red;">**!**</mark> <mark style="color:red;">**str**</mark> <mark style="color:red;"></mark><mark style="color:red;">- оригінальний рядок</mark>

<mark style="color:red;">**!**</mark> <mark style="color:red;">**n1**</mark> <mark style="color:red;"></mark><mark style="color:red;">- кількість символів, які потрібно обрізати зліва</mark> (> 0)

**n2** - кількість символів, які потрібно обрізати справа (< 0)

**endswith(str, substr)** - щоб перевірити, чи закінчується рядок заданим підрядком

Параметри:

<mark style="color:red;">**!**</mark> <mark style="color:red;">**str**</mark> <mark style="color:red;"></mark><mark style="color:red;">- оригінальний рядок</mark> - "де шукати"

<mark style="color:red;">**!**</mark> <mark style="color:red;">**substr**</mark> <mark style="color:red;"></mark><mark style="color:red;">- рядок пошуку</mark> - "що шукати"

**startswith(str, substr)** - щоб перевірити, чи починається рядок із заданого підрядка

Параметри:

<mark style="color:red;">**!**</mark> <mark style="color:red;">**str**</mark> <mark style="color:red;"></mark><mark style="color:red;">- оригінальний рядок</mark> - "де шукати"

<mark style="color:red;">**!**</mark> <mark style="color:red;">**substr**</mark> <mark style="color:red;"></mark><mark style="color:red;">- рядок пошуку</mark> - "що шукати"

**contains(str, substr,registr)** – щоб перевірити, чи містить перший рядок другий рядок

Параметри:

<mark style="color:red;">**!**</mark> <mark style="color:red;">**str**</mark> <mark style="color:red;"></mark><mark style="color:red;">- оригінальний рядок</mark> - "де шукати"

<mark style="color:red;">**!**</mark> <mark style="color:red;">**substr**</mark> <mark style="color:red;"></mark><mark style="color:red;">- рядок пошуку</mark> - "що шукати"

**registr** - прапорець, що вказує, чи враховувати регістр (False означає, що регістр не враховується)

**len(str)** – щоб порахувати кількість символів у рядку.

Параметри:

<mark style="color:red;">**!**</mark> <mark style="color:red;">**str**</mark> <mark style="color:red;"></mark><mark style="color:red;">- оригінальний рядок</mark>

**concat(str1, str2)** – щоб конкатенувати (об'єднати) рядки, передані як параметри

Параметри:

<mark style="color:red;">**!**</mark> <mark style="color:red;">**str1**</mark> <mark style="color:red;"></mark><mark style="color:red;">- рядок 1</mark>

<mark style="color:red;">**!**</mark> <mark style="color:red;">**str2**</mark> <mark style="color:red;"></mark><mark style="color:red;">- рядок 2</mark>

**splitter(str, s, n)** -  щоб розбити рядок на частини. Функція повертає масив елементів

Параметри:

<mark style="color:red;">**!**</mark> <mark style="color:red;">**str**</mark> <mark style="color:red;"></mark><mark style="color:red;">- оригінальний рядок</mark>

<mark style="color:red;">**!**</mark> <mark style="color:red;">**s**</mark> <mark style="color:red;"></mark><mark style="color:red;">- роздільник рядка</mark>

**n** - максимальна кількість елементів

**lower(str)** – щоб перетворити рядок на нижній регістр

Параметри:

<mark style="color:red;">**!**</mark> <mark style="color:red;">**str**</mark> <mark style="color:red;"></mark><mark style="color:red;">- оригінальний рядок</mark>

**upper(str)** -  щоб перетворити рядок на верхній регістр

Параметри:

<mark style="color:red;">**!**</mark> <mark style="color:red;">**str**</mark> <mark style="color:red;"></mark><mark style="color:red;">- оригінальний рядок</mark>

**strip(str)** -  щоб обрізати пробіли з обох кінців рядка

Параметри:

<mark style="color:red;">**!**</mark> <mark style="color:red;">**str**</mark> <mark style="color:red;"></mark><mark style="color:red;">- оригінальний рядок</mark>

**capitalize(str)** -  щоб замінити перший символ рядка на його велику літеру (робить першу літеру слова великою).

Параметри:

<mark style="color:red;">**!**</mark> <mark style="color:red;">**str**</mark> <mark style="color:red;"></mark><mark style="color:red;">- оригінальний рядок</mark>

**title(str)** - щоб перетворити кожне слово в рядку str так, щоб перша літера була великою, а інші — малими

**normalizePhone(str)** -  щоб відформатувати номер телефону у стандартний вигляд: видаляє всі нецифрові символи та замінює початкову цифру 8 на 7, якщо вона є

Параметри:

<mark style="color:red;">**!**</mark> <mark style="color:red;">**str**</mark> <mark style="color:red;"></mark><mark style="color:red;">- оригінальний рядок із номером телефону</mark>

**replace(str, s1, s2, n)** -  щоб замінити підрядок у рядку на інший підрядок

Параметри:

<mark style="color:red;">**!**</mark> <mark style="color:red;">**str**</mark> <mark style="color:red;"></mark><mark style="color:red;">- оригінальний рядок</mark>

<mark style="color:red;">**!**</mark> <mark style="color:red;">**s1**</mark> <mark style="color:red;"></mark><mark style="color:red;">- підрядок, який потрібно замінити</mark>

<mark style="color:red;">**!**</mark> <mark style="color:red;">**s2**</mark> <mark style="color:red;"></mark><mark style="color:red;">- підрядок, на який потрібно замінити</mark>

**n** - кількість замін

\
**base64(str)** – щоб закодувати рядок у формат base64

Параметри:

<mark style="color:red;">**!**</mark> <mark style="color:red;">**str**</mark> <mark style="color:red;"></mark><mark style="color:red;">- оригінальний рядок</mark>

**base64decode(str)** -  щоб декодувати base64 назад у рядок

Параметри:

<mark style="color:red;">**!**</mark> <mark style="color:red;">**str**</mark> <mark style="color:red;"></mark><mark style="color:red;">- оригінальний рядок</mark>

**urlencode(str) -** закодувати рядок, щоб зробити його безпечним для передавання через HTTP

Параметри:

<mark style="color:red;">**!**</mark> <mark style="color:red;">**str**</mark> <mark style="color:red;"></mark><mark style="color:red;">- оригінальний рядок</mark>

Наприклад: *John Smith* стає *John%20Smith*, а *Anna\&Maria* стає *Anna%26Maria*

**urldecode(str)** - щоб декодувати URL-кодований рядок

Параметри:

<mark style="color:red;">**!**</mark> <mark style="color:red;">**str**</mark> <mark style="color:red;"></mark><mark style="color:red;">- оригінальний рядок</mark>

Наприклад: John%20Smith буде перекладено як John Smith

**hmac\_hexdigest(secret\_key, msg, hash\_type)** - щоб обчислити хеш рядка, використовуючи 'sha256', 'md5', 'sha512' або 'sha1'

Параметри:

<mark style="color:red;">**!**</mark> <mark style="color:red;">**secret\_key**</mark> - ключ\ <mark style="color:red;">**!**</mark>  <mark style="color:red;">**msg**</mark> - рядок, який потрібно хешувати\ <mark style="color:red;">**!**</mark>  <mark style="color:red;">**hash\_type**</mark> - тип хешу ( 'sha256', 'md5', 'sha512' або 'sha1')

**select\_random(str, s) -** щоб вибрати випадковий елемент із рядка, розділеного роздільником. Перший параметр — це рядок з елементами, другий — роздільник. Другий параметр за замовчуванням має значення '|'.

Параметри:

<mark style="color:red;">**!**</mark> <mark style="color:red;">**str**</mark> <mark style="color:red;"></mark><mark style="color:red;">- оригінальний рядок</mark>

<mark style="color:red;">**!**</mark> <mark style="color:red;">**s**</mark> <mark style="color:red;"></mark><mark style="color:red;">-</mark> роздільник рядка (за замовчуванням '|')

Приклад використання:&#x20;`select_random('first element | second element | another element | and another one')`

**tg\_escape(str)** - щоб екранувати змінну та відобразити її в повідомленні Telegram з увімкненим розміткою. Функція додає зворотну скісну риску перед такими символами:&#x20;'\_', '\*', '\[', ']', '(', ')', '\~', '', '>', '#', '+', '-', '=', '|', '{', '}', '.', '!'

Параметри:

<mark style="color:red;">**!**</mark> <mark style="color:red;">**str**</mark> <mark style="color:red;"></mark><mark style="color:red;">- оригінальний рядок</mark>

</details>

<details>

<summary>Приклади</summary>

Розгляньмо функцію обрізання рядка:

<div data-with-frame="true"><figure><img src="/files/62e5e7a01ba0b4afa57202a21da385b3c6e5c232" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/28ac7c37b9a702cd994bf783fb3b338be4e0b54b" alt="" width="375"><figcaption></figcaption></figure></div>

Визначення довжини рядка:

<div data-with-frame="true"><figure><img src="/files/a48c52fd95dfa20795875739a4bc3a91c546fd73" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/61db0716c2015d8b8274338377eecffdae2c3fc6" alt="" width="375"><figcaption></figcaption></figure></div>

Функція, що розбиває рядок на частини, часто потрібна під час роботи з таблицями:

<div data-full-width="true" data-with-frame="true"><figure><img src="/files/fe46e65a1a8a08999eabf39ecabbdf8b22ca1978" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-full-width="true" data-with-frame="true"><figure><img src="/files/2a17a74844630f74c618f7e3b0497c92d6bedc50" alt="" width="375"><figcaption></figcaption></figure></div>

Обробка номера телефону:

<div data-with-frame="true"><figure><img src="/files/a2cafd8025c43b3110215bc73ab2609318f5866b" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/f2805f7ce5ec5d9bbb6ef47ee46410845f871106" alt="" width="375"><figcaption></figcaption></figure></div>

Заміна підрядка в рядку:

<div data-full-width="true" data-with-frame="true"><figure><img src="/files/b5969aa1bbe6e09a953ed5b40247b34b44cc4566" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-full-width="true" data-with-frame="true"><figure><img src="/files/739e15583afa04d165720bf90954053d24d51a21" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Приклад коду для копіювання</summary>

<pre><code><strong>/*Аналіз substring()*/
</strong>text = 'text for trimming'
a=substring(text, 4)
a1=substring(text, -4)
b=substring(text, 4, 6)
b1=substring(text, 0, 6)
c=substring(text, 0, -4)
d=substring(text, 4, -4)

/*робота з len()*/
text = 'text to be trimmed'
a=len(text)
b=len("what a wonderful world!")

/*розбиваємо рядок на частини*/
elements = splitter('s, W, q', ',')
text='text1:text2:text3:text4:text5'
texts = splitter(text, ':',2)

/*title()*/
full name = John Smith
full name = title("#{full name}")

/*обробка номера телефону*/
phone = normalizePhone("+971 50 123 4567")

/*заміна підрядка в рядку*/
a=replace("wwww2222ww", "w", "e", 1)


</code></pre>

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/doc/uk/chatbot/functions/kalkulyator/strings.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
