Skip to content

مكتبة string — النصوص

مكتبة string توفر مجموعة متكاملة من دوال معالجة النصوص بدعم كامل لـ Unicode والعربية. تشمل البحث والاستبدال والاستخراج والتقسيم والدمج والتحقق والتحويل. جميع الدوال تتعامل مع الأحرف العربية متعددة البايتات بشكل صحيح.

sad
متغير الآية = "بسم الله الرحمن الرحيم"

اطبع_سطر(طول(الآية))                        # عدد الأحرف
اطبع_سطر(يحتوي_نص(الآية، "الله"))            # صحيح
اطبع_سطر(يبدأ_بـ(الآية، "بسم"))              # صحيح
اطبع_سطر(استبدل_نص(الآية، "الرحمن"، "الكريم"))

ملخص الدوال

البحث والفحص

الدالةالوصف
بحث_نص(نص، فرعي، بداية؟)موقع نص فرعي (-1 إن لم يوجد)
يحتوي_نص(نص، فرعي)هل يحتوي النص على نص فرعي
يبدأ_بـ(نص، بادئة)هل يبدأ النص ببادئة معينة
ينتهي_بـ(نص، لاحقة)هل ينتهي النص بلاحقة معينة

التعديل والاستخراج

الدالةالوصف
استبدل_نص(نص، قديم، جديد، عدد؟)استبدال نص فرعي
استخراج_نص(نص، بداية، طول؟)استخراج جزء من النص
قص_أطراف(نص)إزالة المسافات من الأطراف

التحويل

الدالةالوصف
تحويل_كبير(نص)تحويل الأحرف اللاتينية لكبيرة
تحويل_صغير(نص)تحويل الأحرف اللاتينية لصغيرة

التقسيم والدمج

الدالةالوصف
تقسيم(نص، فاصل، حد؟)تقسيم النص لمصفوفة
دمج(مصفوفة، فاصل؟)دمج مصفوفة في نص واحد

دوال البحث والفحص

بحث_نص(نص، فرعي، بداية؟) — البحث عن نص فرعي

تبحث عن موقع أول ظهور لنص فرعي داخل النص الأساسي. تُرجع رقم الموقع (يبدأ من 0) إذا وُجد النص، أو -1 إذا لم يُعثر عليه. يمكن تمرير معامل ثالث اختياري لتحديد موقع بداية البحث، مما يسمح بإيجاد الظهور الثاني أو الثالث وهكذا. تدعم النصوص العربية والإنجليزية بشكل كامل.

sad
# البحث في أسماء السور القرآنية
متغير السور = "الفاتحة البقرة آل عمران النساء المائدة"

متغير موقع = بحث_نص(السور، "البقرة")
اطبع_سطر("موقع البقرة: " + موقع)         # 9

متغير غير_موجود = بحث_نص(السور، "الأنعام")
اطبع_سطر("موقع الأنعام: " + غير_موجود)   # -1

# البحث بدءاً من موقع معين
متغير نص = "علم وعمل وعلم وعمل"
اطبع_سطر(بحث_نص(نص، "علم"))        # 0
اطبع_سطر(بحث_نص(نص، "علم"، 1))     # الموقع التالي

يحتوي_نص(نص، فرعي) — التحقق من الاحتواء

تتحقق هل يحتوي النص الأساسي على النص الفرعي المحدد. تُرجع صحيح إذا وُجد وخطأ إذا لم يُعثر عليه. أبسط وأوضح من بحث_نص عند الحاجة فقط لمعرفة الوجود دون الموقع.

sad
# فلترة رسائل تحتوي كلمة معينة
متغير الرسالة = "السلام عليكم، اجتماع فريق التطوير غداً إن شاء الله"

إذا (يحتوي_نص(الرسالة، "اجتماع"))
    اطبع_سطر("📅 رسالة تتعلق باجتماع!")
نهاية

إذا (يحتوي_نص(الرسالة، "عاجل"))
    اطبع_سطر("⚠ رسالة عاجلة!")
وإلا
    اطبع_سطر("رسالة عادية")
نهاية

يبدأ_بـ(نص، بادئة) — التحقق من البداية

تتحقق هل يبدأ النص بالبادئة المحددة. مفيدة لتصنيف النصوص أو فلترة البيانات بناءً على بداياتها، مثل فحص أكواد المنتجات أو أنواع الملفات.

sad
# تصنيف الأحاديث حسب الراوي
متغير الحديث = "عن أبي هريرة رضي الله عنه قال: قال رسول الله ﷺ..."

إذا (يبدأ_بـ(الحديث، "عن أبي هريرة"))
    اطبع_سطر("حديث من رواية أبي هريرة رضي الله عنه")
نهاية

# فحص صيغة البريد الإلكتروني
متغير البريد = "info@masjid-alnoor.com"
إذا (ينتهي_بـ(البريد، ".com"))
    اطبع_سطر("نطاق عالمي .com")
نهاية

ينتهي_بـ(نص، لاحقة) — التحقق من النهاية

تتحقق هل ينتهي النص باللاحقة المحددة. مفيدة لفحص امتدادات الملفات أو التحقق من صيغ محددة.

sad
# فحص نوع الملف
متغير اسم_الملف = "تقرير_الزكاة.pdf"

إذا (ينتهي_بـ(اسم_الملف، ".pdf"))
    اطبع_سطر("ملف PDF")
وإلا
    إذا (ينتهي_بـ(اسم_الملف، ".ص"))
        اطبع_سطر("ملف لغة ص")
    نهاية
نهاية

دوال التعديل والاستخراج

استبدل_نص(نص، قديم، جديد، عدد؟) — استبدال نص فرعي

تستبدل كل ظهور لنص فرعي بنص بديل آخر. بشكل افتراضي تستبدل جميع الظهورات، لكن يمكن تحديد عدد مرات الاستبدال عبر المعامل الرابع الاختياري. تُرجع نصاً جديداً ولا تغيّر النص الأصلي.

sad
# تعريب واجهة مستخدم
متغير قالب = "مرحباً {اسم}، لديك {عدد} رسائل جديدة"
متغير رسالة = استبدل_نص(قالب، "{اسم}"، "أحمد")
رسالة = استبدل_نص(رسالة، "{عدد}"، "5")
اطبع_سطر(رسالة)
# الناتج: مرحباً أحمد، لديك 5 رسائل جديدة

# استبدال مرة واحدة فقط
متغير نص = "الله أكبر الله أكبر الله أكبر"
اطبع_سطر(استبدل_نص(نص، "الله أكبر"، "سبحان الله"، 1))
# الناتج: سبحان الله الله أكبر الله أكبر

استخراج_نص(نص، بداية، طول؟) — استخراج جزء من النص

تستخرج جزءاً من النص بدءاً من الموقع المحدد (يبدأ من 0). إذا حُدِّد الطول تستخرج عدداً معيناً من الأحرف، وإلا تستخرج من البداية حتى نهاية النص. تتعامل مع الأحرف العربية المتعددة البايتات بشكل صحيح.

sad
# استخراج أجزاء من التاريخ الهجري
متغير التاريخ = "1446/09/15"

متغير السنة = استخراج_نص(التاريخ، 0، 4)
متغير الشهر = استخراج_نص(التاريخ، 5، 2)
متغير اليوم = استخراج_نص(التاريخ، 8، 2)

اطبع_سطر("السنة الهجرية: " + السنة)   # 1446
اطبع_سطر("الشهر: " + الشهر)           # 09 (رمضان)
اطبع_سطر("اليوم: " + اليوم)           # 15

# استخراج بدون طول (حتى النهاية)
متغير جملة = "الحمد لله رب العالمين"
اطبع_سطر(استخراج_نص(جملة، 10))    # "رب العالمين" تقريباً

قص_أطراف(نص) — إزالة المسافات من الأطراف

تُزيل المسافات والأسطر الجديدة وعلامات التبويب من بداية ونهاية النص. لا تؤثر على المسافات داخل النص. مفيدة جداً عند معالجة مدخلات المستخدم التي قد تحتوي مسافات زائدة.

sad
# تنظيف مدخلات المستخدم
متغير الإدخال = "   محمد عبدالله   "
متغير الاسم_النظيف = قص_أطراف(الإدخال)
اطبع_سطر("الاسم: [" + الاسم_النظيف + "]")
# الناتج: الاسم: [محمد عبدالله]

# تنظيف سطر من ملف
متغير سطر = "\t  بيانات مهمة  \n"
اطبع_سطر(قص_أطراف(سطر))    # "بيانات مهمة"

دوال التحويل

تحويل_كبير(نص) — تحويل لأحرف كبيرة

تحوّل جميع الأحرف اللاتينية الصغيرة إلى كبيرة. الأحرف العربية لا تتأثر لأن العربية ليس فيها تمييز بين أحرف كبيرة وصغيرة.

sad
متغير كود = "sad-lang"
اطبع_سطر(تحويل_كبير(كود))     # "SAD-LANG"

متغير مختلط = "Hello مرحبا"
اطبع_سطر(تحويل_كبير(مختلط))   # "HELLO مرحبا"

تحويل_صغير(نص) — تحويل لأحرف صغيرة

تحوّل جميع الأحرف اللاتينية الكبيرة إلى صغيرة. مفيدة لتوحيد النصوص قبل المقارنة.

sad
# مقارنة نصوص بغض النظر عن حالة الأحرف
متغير إدخال_المستخدم = "YES"
إذا (تحويل_صغير(إدخال_المستخدم) == "yes")
    اطبع_سطر("تم التأكيد")
نهاية

دوال التقسيم والدمج

تقسيم(نص، فاصل، حد؟) — تقسيم النص لمصفوفة

تُقسّم النص إلى مصفوفة من النصوص الفرعية بناءً على الفاصل المحدد. يمكن تحديد حد أقصى للتقسيمات عبر المعامل الثالث الاختياري. إذا لم يُعثر على الفاصل تُرجع مصفوفة بعنصر واحد يحتوي النص الأصلي.

sad
# تحليل بيانات CSV لسجل مدرسة
متغير سطر = "أحمد،18،95،القاهرة"
متغير الحقول = تقسيم(سطر، "،")

اطبع_سطر("الاسم: " + الحقول[0])       # أحمد
اطبع_سطر("العمر: " + الحقول[1])       # 18
اطبع_سطر("الدرجة: " + الحقول[2])      # 95
اطبع_سطر("المدينة: " + الحقول[3])     # القاهرة

# تقسيم مع حد
متغير مسار = "مستندات/مشاريع/لغة-ص/مصادر"
متغير أجزاء = تقسيم(مسار، "/"، 2)
# أجزاء = ["مستندات"، "مشاريع"، "لغة-ص/مصادر"]

دمج(مصفوفة، فاصل؟) — دمج مصفوفة في نص

تدمج عناصر مصفوفة في نص واحد مع فاصل بين كل عنصر. الفاصل اختياري (افتراضه نص فارغ). عكس عملية تقسيم.

sad
# بناء جملة من كلمات
متغير الكلمات = ["لا"، "إله"، "إلا"، "الله"]
متغير الشهادة = دمج(الكلمات، " ")
اطبع_سطر(الشهادة)
# الناتج: لا إله إلا الله

# بناء مسار ملف
متغير أجزاء_المسار = ["home"، "user"، "documents"، "تقرير.txt"]
متغير المسار = دمج(أجزاء_المسار، "/")
اطبع_سطر(المسار)
# الناتج: home/user/documents/تقرير.txt

# دمج بدون فاصل
متغير أرقام = ["1"، "2"، "3"، "4"]
اطبع_سطر(دمج(أرقام))    # "1234"

مثال شامل

sad
# محلل نصوص — تحليل آيات قرآنية
اطبع_سطر("=== محلل النصوص ===")

متغير النص = "إنما المؤمنون إخوة فأصلحوا بين أخويكم واتقوا الله لعلكم ترحمون"

# معلومات أساسية
اطبع_سطر("النص: " + النص)
اطبع_سطر("طول النص: " + طول(النص) + " حرف")

# تقسيم لكلمات
متغير الكلمات = تقسيم(النص، " ")
اطبع_سطر("عدد الكلمات: " + حجم_مصفوفة(الكلمات))

# البحث
إذا (يحتوي_نص(النص، "المؤمنون"))
    اطبع_سطر("✓ النص يتحدث عن المؤمنين")
نهاية

إذا (يحتوي_نص(النص، "الله"))
    متغير موقع = بحث_نص(النص، "الله")
    اطبع_سطر("✓ لفظ الجلالة في الموقع: " + موقع)
نهاية

# الاستبدال
متغير نسخة = استبدل_نص(النص، "المؤمنون"، "المسلمون")
اطبع_سطر("بعد الاستبدال: " + نسخة)

# عرض الكلمات مرقّمة
اطبع_سطر("--- الكلمات ---")
متغير ت = 1
لكل كلمة في الكلمات
    اطبع_سطر(ت + ". " + كلمة)
    ت = ت + 1
نهاية

مُرخَّص بموجب رخصة MIT