مراجعة - إيجاد الكلمة الأولى
جزء من قسم Logic & Flow في رحلة Rust على Coddy — الدرس 58 من 66.
التحدي
سهلستتلقى مدخلاً واحداً يحتوي على جملة بها كلمات متعددة مفصولة بمسافات. ابحث عن الكلمة الأولى من الجملة واطبعها باستخدام تقطيع السلسلة النصية (string slicing).
المتطلبات:
- اقرأ جملة الإدخال وقم بإزالة المسافات الزائدة (trim)
- ابحث عن موقع أول مسافة في الجملة
- أنشئ شريحة نصية (string slice) من بداية الجملة حتى (ولكن دون تضمين) أول مسافة
- اطبع الكلمة الأولى
تلميح: يمكنك استخدام التابع .find() لتحديد موقع أول مسافة. استدعه بهذا الشكل: sentence.find(' ')، مع تمرير مسافة كمعامل. يعيد هذا التابع Option يحتوي على الفهرس (index) في حال العثور على مسافة. استخدم .unwrap_or(sentence.len()) للتعامل مع الحالات التي قد لا توجد فيها مسافة (كلمة واحدة)، مع جعل الطول الكامل للجملة هو القيمة الافتراضية.
الإدخال:
- جملة تحتوي على كلمة واحدة أو أكثر مفصولة بمسافات (على سبيل المثال،
Hello World from Rust)
المخرجات:
- الكلمة الأولى من الجملة
جرّب بنفسك
use std::io::{self, BufRead};
fn main() {
// قراءة المدخلات
let stdin = io::stdin();
let sentence = stdin.lock().lines().next().unwrap().unwrap().trim().to_string();
// TODO: اكتب كودك أدناه
// ابحث عن موقع أول مسافة
// أنشئ شريحة نصية من البداية حتى أول مسافة
// قم بتخزين الكلمة الأولى في متغير
// اطبع الكلمة الأولى
// println!("{}", first_word);
}جميع دروس Logic & Flow
1تدفق التحكم المتقدم
تعبير 'match'مطابقة قيم متعددةمطابقة النطاقاتتعبير 'if let'الحلقات التكرارية كتعبيراتمراجعة - محلل أوامر بسيط4تجميع البيانات باستخدام Structs
ما هو الـ Struct؟نظرة عامة على الـ Structsالوصول إلى حقول الـ Structالـ Structs القابلة للتعديلالـ Structs كمعاملات للدوالالـ Tuple Structsمراجعة - إنشاء Book Struct7معالجة الأخطاء باستخدام 'Result'
ما هو 'Result'؟استخدام 'match' مع 'Result'is_ok() و is_err()اختصارات: unwrap و expectعامل علامة الاستفهام '?'تحويل السلاسل النصية إلى أرقامملخص - دالة القسمة الآمنة10الـ Closures والدوال المجهولة
ما هو الـ Closure؟تعريف Closure بسيطالـ Closures مع المعاملاتالتقاط البيئة المحيطةملخص - Closure الجامع البسيط2مقدمة في الـ Vectors
ما هو الـ Vector؟إنشاء Vectorإضافة عناصر باستخدام pushالوصول إلى عناصر الـ Vectorالتكرار عبر الـ Vectorالتكرار القابل للتعديل (Mutable Iteration)إزالة العناصرمراجعة - متتبع نقاط بسيط5أزواج (المفتاح والقيمة) مع Hash Maps
ما هو Hash Map؟إنشاء Hash Mapإدراج أزواج (المفتاح والقيمة)الوصول إلى القيمالتكرار عبر Hash Mapتحديث قيمةإزالة زوجملخص - عداد الكلمات6التعامل مع غياب القيم باستخدام 'Option'
ما هو الـ 'Option'؟استخدام 'match' مع 'Option''is_some()' و 'is_none()'فك تغليف الـ 'Option'الدالة 'expect'توفير قيمة افتراضية: 'unwrap_or'مراجعة - البحث عن عنصر9شرائح الـ String والمزيد
String مقابل &strإنشاء شرائح الـ Stringالشرائح كمعاملات للدوالشرائح أخرىمراجعة - إيجاد الكلمة الأولى