دوال الـ String
جزء من قسم Fundamentals في رحلة Rust على Coddy — الدرس 69 من 75.
تمتلك لغة Rust مجموعة غنية من دوال السلاسل النصية (string methods) المدمجة التي تتيح لك إجراء عمليات متنوعة على السلاسل النصية. توفر هذه الدوال وظائف لمعالجة السلاسل النصية والبحث فيها وتحويلها. إليك بعض دوال السلاسل النصية الشائعة الاستخدام:
len(): يعيد عدد الأحرف في السلسلة النصية.chars().nth(index): يعيد الحرف الموجود في الفهرس المحدد (يبدأ من 0). تعيد هذه الطريقةOption<char>— وهو نوع خاص في Rust يمثل إما قيمة Some (إذا كان الفهرس موجوداً) أو None (إذا لم يكن موجوداً). استدعاء.unwrap()عليه يستخرج قيمة الحرف مباشرة.
contains(substring): يتحقق مما إذا كانت السلسلة النصية تحتوي على السلسلة الفرعية المحددة.starts_with(prefix): يتحقق مما إذا كانت السلسلة النصية تبدأ بالبادئة المحددة.ends_with(suffix): يتحقق مما إذا كانت السلسلة النصية تنتهي باللاحقة المحددة.
to_uppercase(): يحول السلسلة النصية إلى أحرف كبيرة.to_lowercase(): يحول السلسلة النصية إلى أحرف صغيرة.trim(): يزيل المسافات البيضاء من بداية ونهاية السلسلة النصية.
على سبيل المثال:
let message = "Hello, World!";
let length = message.len();
let firstChar = message.chars().nth(0).unwrap();
let contains_world = message.contains("World");
let starts_with_hello = message.starts_with("Hello");
let lower = message.to_lowercase();التحدي
سهلقم بإنشاء دالة باسم analyzeString تأخذ سلسلة نصية كمدخل وتطبع التحليل التالي باستخدام دوال السلسلة النصية:
- طول السلسلة النصية
- الحرف الموجود في الفهرس 4
- ما إذا كانت السلسلة تحتوي على السلسلة الفرعية "Rust"
- ما إذا كانت السلسلة تنتهي بنقطة
. - السلسلة النصية محولة إلى أحرف كبيرة (uppercase)
يجب أن يتبع المخرج هذا التنسيق بالضبط:
Length: [The length]
Char at 4: [The Char at index 4]
Contains Rust: [true or false]
Ends with dot: [true or false]
Uppercase: [The string in uppercase]ملاحظة: افترض أن سلسلة الإدخال ستكون طويلة بما يكفي لجميع العمليات.
ورقة مرجعية
طرق السلاسل النصية المضمنة في Rust:
len(): تعيد عدد الأحرفchars().nth(index).unwrap(): تعيد الحرف الموجود في الفهرس المحدد (يبدأ من 0)contains(substring): تتحقق مما إذا كانت السلسلة النصية تحتوي على السلسلة الفرعية المحددةstarts_with(prefix): تتحقق مما إذا كانت السلسلة النصية تبدأ بالبادئة المحددةends_with(suffix): تتحقق مما إذا كانت السلسلة النصية تنتهي باللاحقة المحددةto_uppercase(): تحول السلسلة النصية إلى أحرف كبيرةto_lowercase(): تحول السلسلة النصية إلى أحرف صغيرةtrim(): تزيل المسافات البيضاء في البداية والنهاية
let message = "Hello, World!";
let length = message.len();
let firstChar = message.chars().nth(0).unwrap();
let contains_world = message.contains("World");
let starts_with_hello = message.starts_with("Hello");
let lower = message.to_lowercase();جرّب بنفسك
use std::io;
fn analyze_string(s: &str) {
// اكتب كودك هنا
}
fn main() {
let mut message = String::new();
io::stdin().read_line(&mut message).unwrap();
let message = message.trim();
analyze_string(message);
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)اختصارات العمليات الحسابيةمعاملات المقارنةمقارنة النصوص7أساسيات الإدخال والإخراج
الطباعة على الكونسولقراءة مدخلات المستخدممراجعة - حتى 120مراجعة - True أو False2المتغيرات - الجزء الأول
الأرقامالمحارف (Char)النصوص (String)القيم المنطقية (Boolean)المتغيرات القابلة للتغيير5المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالث11الدوال
تعريف الدوالالمعاملات والوسائطقيم الإرجاعقيم إرجاع متعددةمراجعة - دالة Sigmaمراجعة - دالة التحقق14التكرار عبر المصفوفات
دليل النطاق (Range)حلقة For المحسنةالاستعارة في الحلقةعمليات المصفوفات الشائعة3المتغيرات - الجزء الثاني
التصريح عن النوعقواعد التسميةاستنتاج النوعمراجعة - تهيئة المتغيراتتحويل الأنواع9الحلقات التكرارية
For عبر السلاسلحلقة Whileجملة Breakجملة Continueالحلقات المتداخلةتسميات الحلقاتالحلقة اللانهائيةمراجعة - الإدخال الديناميكي