# العمل مع السلاسل النصية

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)** - لتهريب متغير وعرضه في رسالة تيليجرام مع تفعيل التنسيق. تضيف الدالة شرطة مائلة عكسية قبل الأحرف التالية:&#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/610d2f85e238ea6b3398af8e7d44213250e9a366" alt=""><figcaption></figcaption></figure></div>

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

تحديد طول السلسلة النصية:

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

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

غالبًا ما تكون الدالة التي تقسم سلسلة نصية إلى أجزاء مطلوبة عند العمل مع الجداول:

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

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

معالجة رقم الهاتف:

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

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

استبدال جزء فرعي في سلسلة نصية:

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

<div data-full-width="true" data-with-frame="true"><figure><img src="/files/721d6dc69cea472f0388688224020310ff46a567" 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/ar/chatbot/functions/alaalh-alhasbh/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.
