1. الطرق الأساسية
أ. التحويل بين الحالات
- toUpperCase: لتحويل الأحرف إلى أحرف كبيرة.
- toLowerCase: لتحويل الأحرف إلى أحرف صغيرة.
String name = "Dart Programming";
print(name.toUpperCase()); // "DART PROGRAMMING"
print(name.toLowerCase()); // "dart programming"
Dartملاحظة: لا تؤثر على الحروف العربية
ب. الطول والمحتوى :
- length تُرجع عدد الأحرف في السلسلة النصية.
- isEmpty – isNotEmpty: يتحقق هل السلسلة فارغة أم لا.
String text = "مرحبا";
print(text.length); // 5 (عدد الحروف)
print(text.isEmpty); // false
print(text.isNotEmpty); // true
Dart2. البحث والاستبدال
- contains: يتحقق هل الكلمة تحتوي على جزء معيّن أم لا.
- startsWith: هل يبدأ النص بكلمة معينة؟
- endsWith: هل ينتهي النص بكلمة معينة؟
- indexOf: تُرجع موقع أول ظهور للكلمة داخل النص، وإذا لم توجد تُرجع -1.
- lastIndexOf: تُرجع موقع آخر ظهور للكلمة داخل النص.
String sentence = "Dart هي لغة برمجة قوية";
print(sentence.contains("لغة")); // true
print(sentence.startsWith("Dart")); // true
print(sentence.endsWith("قوية")); // true
print(sentence.indexOf("برمجة")); // 12 (موقع بداية الكلمة)
Dartب. الاستبدال
- replaceAll: تستبدل جزء من النص بكلمة جديدة.
- replaceFirst: تستبدل جزء من النص بكلمة جديدة.
String message = "أحب Dart وأحب Flutter";
print(message.replaceAll("أحب", "أتعلم"));
// "أتعلم Dart وأتعلم Flutter"
print(message.replaceFirst("أحب", "أتعلم"));
// "أتعلم Dart وأحب Flutter"
Dart3. التقسيم والتقطيع
أ. تقسيم النص: split => تقسم النص إلى أجزاء باستخدام فاصل.
void main() {
String names = "Ali,Ahmed,Mona";
List<String> list = names.split(",");
print(list); // [Ali, Ahmed, Mona]
}
Dartcontains (“نص”):
🔹 يتحقق هل الكلمة تحتوي على جزء معيّن أم لا.
String email = "[email protected]";
print(email.contains('@')); // true
print(email.endsWith('.com')); // true
String number = "12345";
print(number.isNotEmpty); // true
print(number.codeUnits); // [49, 50, 51, 52, 53]
Dartب. تقطيع النص
- substring: يأخذ جزء من النص حسب الموقع (index) حيث يبدأ من الرقم الاول وينتهي عند الرقم الثاني ولكن النهاية تكون غير مضمنة.
String text = "Hello World";
print(text.substring(6)); // "World"
print(text.substring(0, 5)); // "Hello"
print(text.substring(2, 7)); // "llo W"
Dart4. التنسيق والمسافات
أ. إزالة المسافات
- trim: يزيل الفراغات الزائدة من البداية والنهاية.
- trimLeft: يزيل الفراغات الزائدة من اليسار.
- trimRight: يزيل الفراغات الزائدة من اليمين.
String spaced = " Dart ";
print(spaced.trim()); // "Dart"
print(spaced.trimLeft()); // "Dart "
print(spaced.trimRight()); // " Dart"
Dartب. حشو النص
padLeft(length, [character])
: تضيف رموز على اليسار حتى يصل النص لطول معيّن.padRight(length, [character])
تضيف رموز على اليمين حتى يصل النص لطول معيّن.
String num = "5";
print(num.padLeft(3, '0')); // "005"
print(num.padRight(3, '*')); // "5**"
Dart6. الطرق المتقدمة
أ. التكرار
String heart = "❤️";
print(heart * 3); // "❤️❤️❤️"
Dartب. التحويل إلى قائمة حروف
- runes: تُرجع الرموز (Unicode) الخاصة بالنص.
- Unicode هو معيار ترميز أحرف عالمي مصمم لتمثيل النصوص والرموز من جميع أنظمة الكتابة حول العالم.
- Unicode هو معيار ترميز الأحرف الأكثر أساسية وشمولية. لكل حرف رقم سداسي عشري فريد، يتكون من 4 إلى 6 أرقام، يُعرف باسم نقطة يونيكود. يونيكود معيار موحد لجميع منصات الحوسبة، مما يتيح تمثيل النصوص ومعالجتها بشكل متسق عبر مختلف الأنظمة والتطبيقات.
String word = "نص";
print(word.runes.toList()); // [1606, 1589]
print(String.fromCharCodes([1606, 1589])); // "نص"
Dart- codeUnitAt(index): يُرجع الكود الرقمي (Unicode) للحرف في موقع معيّن.
void main() {
String char = "A";
print(char.codeUnitAt(0)); // 65
}
DartcompareTo(“نص”):
🔹 يقارن بين سلسلتين (ترتيبًا أبجديًا):
- يُرجع 0 إذا كانت متساوية
- يُرجع -1 إذا النص الأصلي أصغر
- يُرجع 1 إذا النص الأصلي أكبر
void main() {
print("apple".compareTo("banana")); // -1
print("apple".compareTo("apple")); // 0
}
Dartالملاحظات المهمة
- النصوص غير قابلة للتعديل (Immutable): أي عملية تعديل ترجع نسخة جديدة
- الحساسية للحالة:
"Dart" != "dart"
ما لم تستخدمtoLowerCase()
- الدعم الكامل للـ Unicode: بما في ذلك العربية والرموز
- الأداء: عمليات مثل
replaceAll
قد تكون مكلفة للنصوص الطويلة
الفرق بين أهم الطرق
الطريقة | الوصف | مثال |
---|---|---|
contains() | يبحث عن نص | "Dart".contains("ar") → true |
substring() | يستخرج جزءاً من النص | "Hello".substring(1,3) → "el" |
split() | يقسم النص إلى قائمة | "a,b,c".split(",") → ["a","b","c"] |
trim() | يزيل المسافات | " dart ".trim() → "dart" |
هل تريد شرحاً أكثر تفصيلاً لأي طريقة معينة؟
الدالة | وظيفتها | مثال النتيجة |
---|---|---|
length | عدد الأحرف | "Ali".length → 3 |
toUpperCase() | تحويل لأحرف كبيرة | "hello" → "HELLO" |
contains("x") | هل يحتوي النص على “x”؟ | true/false |
substring(0, 2) | يأخذ جزء من النص | "Ahmed" → "Ah" |
replaceAll() | استبدال كلمة بكلمة | "Java" → "Dart" |
trim() | حذف الفراغات | " text " → "text" |
split(",") | يقسم النص إلى أجزاء | "Ali,Ahmed" → [Ali, Ahmed] |
isEmpty | هل السلسلة فارغة؟ | true/false |