مراجعة - إيجاد الكلمة الأولى
جزء من قسم 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الشرائح كمعاملات للدوالشرائح أخرىمراجعة - إيجاد الكلمة الأولىتدرّب بنفسك: مترجم Rust عبر الإنترنت