✨ اكتشف قوة النصوص في JavaScript مع String Methods الساحرة!

مرحباً بك في عالم معالجة النصوص في جافا سكريبت! 🎯 في هذا الدرس، سنتعلم كيفية التحكم في النصوص (Strings) وتحويلها والبحث فيها باستخدام أدوات قوية تسمى String Methods. تخيل أن لديك قطعة من الصلصال (النص) وهذه الأدوات هي يديك التي تشكلها كما تريد! هيا نبدأ.


🔤 ما هي String Methods؟

ببساطة، String Methods هي وظائف (Functions) جاهزة مدمجة في اللغة، مصممة خصيصاً للتعامل مع النصوص. كل نص (String) في جافا سكريبت يأتي مع مجموعة من هذه الوظائف التي يمكنك استدعاؤها للقيام بمهام محددة عليه، مثل معرفة طوله، أو تحويله لحروف كبيرة، أو البحث عن كلمة بداخله.

// مثال: لدينا نص
let greeting = "Hello World";

// يمكننا استخدام Methods على هذا المتغير `greeting`
// Example:
// variableName.functionName()

console.log(greeting.toUpperCase());

📏 الطريقة الأولى: معرفة طول النص (.length)

الخاصية .length ليست وظيفة (Method) بالمعنى الدقيق، بل هي خاصية (Property)، لكنها أساسية جداً لفهم النصوص. تعطيك عدد الأحرف (بما في ذلك المسافات) الموجودة في النص.

let message = "I am learning JavaScript";
let messageLength = message.length; // لا نستخدم الأقواس () لأنها خاصية وليست دالة

console.log(messageLength); // Output: 24 (number of characters and spaces)
// Note: Arabic and English letters are counted as one character.

🔠 طرق التحويل بين الحروف الكبيرة والصغيرة (Case Methods)

هذه الطرق مفيدة جداً عند المقارنة بين النصوص أو عند عرض البيانات بشكل موحد.

  • .toUpperCase(): تحول كل الحروف الإنجليزية في النص إلى حروف كبيرة (كابيتال).
    let word = "hello world";
    let bigWord = word.toUpperCase();
    console.log(bigWord); // المخرجات: HELLO WORLD
    
  • .toLowerCase(): تحول كل الحروف الإنجليزية في النص إلى حروف صغيرة (سمول).
    let shout = "WELCOME TO CODEX ACADEMY";
    let quietShout = shout.toLowerCase();
    console.log(quietShout); // المخرجات: welcome to codex academy
    
    ⚠️ ملاحظة مهمة: هذه الطرق تؤثر فقط على الحروف الإنجليزية (A-Z, a-z). الحروف العربية لا تتأثر لأنها لا تملك مفهوم "كبير" و"صغير".

🔍 طرق البحث في النص (Search Methods)

تساعدك هذه الطرق في فحص محتوى النص.

  • .includes(searchValue): تبحث إذا كان النص يحتوي على جزء (كلمة أو حروف) معين. ترجع true إذا وجدته، و false إذا لم تجده.
    let sentence = "I love programming in JavaScript";
    let hasJS = sentence.includes("JavaScript");
    let hasPython = sentence.includes("Python");
    
    console.log(hasJS);    // المخرجات: true
    console.log(hasPython); // المخرجات: false
    
  • .startsWith(searchValue): تتحقق إذا كان النص يبدأ بـ جزء معين.
    let fileName = "report_2023.pdf";
    console.log(fileName.startsWith("report")); // المخرجات: true
    console.log(fileName.startsWith("2023"));   // المخرجات: false
    
  • .endsWith(searchValue): تتحقق إذا كان النص ينتهي بـ جزء معين
    let fileName = "report_2023.pdf";
    console.log(fileName.endsWith(".pdf")); // المخرجات: true
    console.log(fileName.endsWith(".jpg")); // المخرجات: false
    

✂️ طرق استخراج أجزاء من النص (Extraction Methods)

تستخدم لقص جزء محدد من النص الأصلي.

  • .slice(start, end): تستخرج جزءاً من النص من الفهرس start وحتى الفهرس end (ولكن لا تشمل الحرف الموجود في الفهرس end). إذا حذفت end، ستأخذ من start حتى النهاية.
    let fullText = "JavaScript is a great language";
    let part1 = fullText.slice(0, 10); // من الفهرس 0 إلى 9
    let part2 = fullText.slice(11);    // من الفهرس 11 إلى النهاية
    
    console.log(part1); // المخرجات: JavaScript
    console.log(part2); // المخرجات: is a great language
    
  • .substring(start, end): تعمل بشكل مشابه جداً لـ slice. الفرق الرئيسي هو في كيفية تعاملها مع الأرقام السالبة (وهو موضوع أكثر تقدمًا، دعنا نركز على الأساسيات الآن).

🔄 طرق التعديل والتنظيف (Modification Methods)

  • .replace(oldValue, newValue): تستبدل أول ظهور فقط للجزء oldValue بالجزء newValue.
    let oldMessage = "I love apples. Apples are delicious.";
    let newMessage = oldMessage.replace("Apples", "Bananas");
    
    console.log(newMessage); // المخرجات: "I love Bananas. Apples are delicious."
    // لاحظ أنها استبدلت أول "Apples" فقط!
    
  • .trim(): تقوم بإزالة جميع المسافات الفارغة (Spaces) من بداية ونهاية النص فقط. لا تلمس المسافات في المنتصف.
    let userInput = "    اسم المستخدم     ";
    let cleanInput = userInput.trim();
    
    console.log("'" + cleanInput + "'"); // المخرجات: 'اسم المستخدم'
    // لاحظ اختفاء المسافات الزائدة من الطرفين فقط!
    

📝 مثال تطبيقي بسيط يجمع بين أكثر من Method

لنطبق ما تعلمناه في مثال واقعي: تنظيف ومعالجة إدخال من المستخدم.

// تخيل أن المستخدم أدخل اسمه بهذا الشكل
let rawName = "   aHmeD   ";

// نريد تنظيفه وتحويله ليبدأ بحرف كبير والباقي صغير
let trimmedName = rawName.trim();          // الخطوة 1: تنظيف الطرفين -> "aHmeD"
let lowerCaseName = trimmedName.toLowerCase(); // الخطوة 2: تحويل للصغير -> "ahmed"
let finalName = lowerCaseName.charAt(0).toUpperCase() + lowerCaseName.slice(1); // الخطوة 3: أول حرف كبير

console.log(`Your name after cleaning is: ${finalName}`); // المخرجات: Your name after cleaning is: Ahmed

🎯 خلاصة الدرس

تعلمنا اليوم مجموعة من أهم أدوات التعامل مع النصوص في جافا سكريبت:

  • .length لقياس طول النص.
  • .toUpperCase() و .toLowerCase() للتحكم في حجم الحروف الإنجليزية.
  • .includes() و .startsWith() و .endsWith() للبحث والفحص.
  • .slice() و .substring() لقص أجزاء من النص.
  • .replace() للاستبدال و .trim() للتنظيف.

تذكر أن هذه الطرق لا تغير النص الأصلي، بل ترجع نسخة جديدة معدلة منه. جربها بنفسك في وحدة التحكم (Console) للمتصفح لترى النتائج مباشرة! 💻