String Functions (Dart)

  • length: عدد الأحرف myString.length.

  • isEmpty/isNotEmpty: تحقق إذا السلسلة فاضية.

  • toLowerCase()/toUpperCase(): تحويل الأحرف.

  • trim()/trimLeft()/trimRight(): إزالة الفراغات من الأطراف.

  • contains(pattern): يشيك إذا النص فيه substring أو RegExp.

  • startsWith(prefix)/endsWith(suffix): للبحث عند البداية أو النهاية.

  • substring(start, [end]): يقتطع جزء من النص.

  • split(pattern): يحول النص إلى List<String> بقطع.

  • replaceAll(from, to)/replaceFirst(from, to): يستبدل أجزاء من النص.

  • indexOf(value)/lastIndexOf(value): يعطي موقع أول/آخر ظهور.

  • padLeft(width, [padding])/padRight(width, [padding]): يملّأ بالسلاسل.

  • toString()/codeUnits/runes: تحويل أو قراءة الـ Unicode.

  • الكود اللي كتبته بيستخدم indexOf('i'), وهي عملية (method) على الـ String اللي بتبحث عن الحرف أو ال-substring وترجع أول موقع له (أو -1 لو مش موجود).

  • في المثال name = "Ali", الحرف 'i' موجود في الموضع رقم 2 (بسبب zero-indexing)، فالناتج 2.
    indexOf Example

  • In Dart String, indexOf finds the first occurrence index of a substring.

  • For "hello", calling indexOf('l') returns 2 because indexes start at 0 (h=0, e=1, l=2).

  • If the character isn’t present, it returns -1.

String Properties

  • كل String في Dart عنده خصائص (properties) قبل ما نطقّب عليه وظائف:
    • length: يخبرك عدد الأحرف في النص.
    • isEmpty / isNotEmpty: بيقولك إذا النص فاضي أو لا.
    • codeUnits و runes: يعطيك قائمة القيم الرقمية للـ Unicode للنص.
  • الفارق بين property و function: property زي title.length ما بياخدش ()، بينما function زي title.trim() ممكن تعدّل النص أو يعيد نسخة.

لو عايز أشرح الفرق عمليًا ونعمل مثال يطبّق الخصائص دي، قولّي عايز إزاي؟

  • صح، كل نوع بيانات في Dart (وكتير من اللغات) عنده خصائص (properties) خصوصًا الأنواع المركبة والنصوص، والخصائص دي بتديك معلومات عن القيمة بدون ما تنفّذ دالة.
  • مثال: String فيه length, isEmpty, codeUnits; List فيه length, isEmpty, first, last; Map فيه keys, values; حتى int له bitLength.
  • في Dart الخصائص تُستخدم بدون (), أما الدوال (functions/methods) بتجي بين قوسين.
  • لو عايز نعدّل أو نستعرض خصائص النوع اللي بتشتغل عليه، قولي النوع ونركّز على اللي محتاجه (مثلاً List أو custom class).