String Methods في JavaScript: قص النصوص، البحث، الاستبدال والتنظيف بأمثلة عملية

بعد ما تعلمت أساس Strings، الخطوة الطبيعية هي تعلم الأدوات اليومية للتعامل مع النصوص. هنا يأتي دور String Methods في JavaScript.

هذا الدرس مناسب إذا كنت تبحث عن: قص جزء من النص، البحث عن كلمة، استبدال نص، أو تنظيف المدخلات من المسافات الزائدة.

قاعدة مهمة قبل البدء

النصوص في JavaScript من النوع immutable. يعني أغلب الدوال لا تغيّر النص الأصلي، بل تعيد نصاً جديداً.

let name = "javascript";
let upper = name.toUpperCase();

console.log(name);  // "javascript"
console.log(upper); // "JAVASCRIPT"

ماذا يفعل هذا الكود؟ ينشئ نسخة جديدة بحروف كبيرة دون تغيير المتغير الأصلي.

النتيجة المتوقعة: name يبقى كما هو، وupper يحمل النص المعدّل.

خطأ شائع: توقع أن toUpperCase() تعدل النص داخل نفس المتغير تلقائياً.

1) length لمعرفة طول النص

let text = "Hello JS";
console.log(text.length); // 8

ماذا يفعل هذا الكود؟ يحسب عدد الأحرف بما فيها المسافة.

النتيجة المتوقعة: القيمة 8.

خطأ شائع: نسيان أن المسافات تُحسب ضمن الطول.

2) toUpperCase() و toLowerCase()

let email = "USER@Example.COM";

console.log(email.toLowerCase()); // user@example.com
console.log(email.toUpperCase()); // USER@EXAMPLE.COM

ماذا يفعل هذا الكود؟ يحوّل الأحرف إلى صغيرة أو كبيرة لتوحيد التنسيق.

النتيجة المتوقعة: يسهل مقارنة النصوص مثل البريد الإلكتروني.

خطأ شائع: مقارنة نصين بدون توحيد الحالة أولاً.

3) indexOf() و includes() للبحث داخل النص

let sentence = "I love JavaScript";

console.log(sentence.indexOf("love"));    // 2
console.log(sentence.indexOf("Python"));  // -1
console.log(sentence.includes("Java"));   // true

ماذا يفعل هذا الكود؟ يبحث عن جزء من النص بطريقتين مختلفتين.

النتيجة المتوقعة: موقع البداية مع indexOf أو قيمة منطقية مع includes.

خطأ شائع: اعتبار 0 يعني "غير موجود" بينما قد يعني "موجود من البداية".

4) slice() لقص جزء من النص

let word = "JavaScript";

console.log(word.slice(0, 4));  // Java
console.log(word.slice(4));     // Script
console.log(word.slice(-6));    // Script

ماذا يفعل هذا الكود؟ يستخرج جزءاً من النص حسب بداية ونهاية محددتين.

النتيجة المتوقعة: يمكن أخذ أول جزء أو آخر جزء بسهولة.

خطأ شائع: الخلط بين الفهرس (Index) ورقم الحرف البشري (العد يبدأ من 0).

5) replace() لاستبدال نص

let msg = "Welcome user";
let newMsg = msg.replace("user", "Rachid");

console.log(newMsg); // Welcome Rachid

ماذا يفعل هذا الكود؟ يستبدل أول تطابق للنص المحدد.

النتيجة المتوقعة: إنشاء نسخة جديدة بالنص المستبدل.

خطأ شائع: توقع استبدال كل التكرارات تلقائياً بدون Regex عالمي.

6) trim() لتنظيف المسافات الزائدة

let username = "   admin   ";
console.log(username.trim()); // "admin"

ماذا يفعل هذا الكود؟ يزيل المسافات من البداية والنهاية فقط.

النتيجة المتوقعة: قيمة نظيفة مناسبة للتحقق والتخزين.

خطأ شائع: الاعتقاد أنه يزيل المسافات داخل النص أيضاً.

مثال تطبيقي واقعي: تنظيف مدخل المستخدم

let rawInput = "   JavaScript Course   ";

let cleanInput = rawInput.trim();
let normalized = cleanInput.toLowerCase();
let slug = normalized.replace(" ", "-");

console.log(cleanInput); // "JavaScript Course"
console.log(normalized); // "javascript course"
console.log(slug);       // "javascript-course"

ماذا يفعل هذا الكود؟ ينظف النص ثم يوحّد حالته ثم يجهزه كرابط بسيط.

النتيجة المتوقعة: مدخل أكثر احترافية قبل الحفظ أو العرض.

خطأ شائع: تنفيذ الخطوات بترتيب غير مناسب ثم ظهور نتيجة غير متوقعة.

Story قصيرة: لماذا فشل تسجيل الدخول؟

مستخدم كتب البريد: " USER@MAIL.COM " مع مسافات وأحرف كبيرة. النظام قارن القيمة مباشرة مع بريد مخزن بحروف صغيرة، ففشل الدخول. بعد استخدام trim() وtoLowerCase() قبل المقارنة، اختفت المشكلة.

جدول سريع لأكثر الدوال استخداماً

الدالة متى تستخدمها؟ مثال سريع
length عدّ الأحرف "abc".length // 3
toUpperCase() توحيد النص بأحرف كبيرة "js".toUpperCase() // "JS"
indexOf() معرفة مكان كلمة "hello".indexOf("e") // 1
includes() التحقق من وجود جزء "hello".includes("ll") // true
slice() قص جزء من النص "hello".slice(1, 4) // "ell"
replace() تبديل نص بآخر "I like JS".replace("JS", "PHP")
trim() إزالة مسافات البداية والنهاية " ok ".trim() // "ok"

Checklist قبل إنهاء الدرس

  • أفهم أن String methods تعيد قيمة جديدة غالباً.
  • أعرف متى أستخدم indexOf ومتى أستخدم includes.
  • أستطيع تنظيف مدخل المستخدم باستخدام trim.
  • أستطيع قص جزء من النص باستخدام slice.
نصيحة عملية: في أي form، استخدم trim() أولاً ثم وحّد الحالة بـ toLowerCase() قبل التحقق.

الأسئلة الشائعة — FAQ

هل دوال النصوص تعدل النص الأصلي؟

لا غالباً. معظم الدوال تعيد نصاً جديداً، لذلك احفظ النتيجة في متغير جديد عند الحاجة.

ما الفرق بين indexOf وincludes؟

indexOf يعيد رقم الموقع أو -1، بينما includes يعيد true/false.

متى أستخدم trim؟

قبل المقارنة أو الحفظ، خصوصاً مع مدخلات المستخدم من النماذج.

الخطوة التالية: ابدأ درس DOM في JavaScript لتتعلم كيف تطبق هذه النتائج النصية مباشرة داخل عناصر الصفحة.

تريد مراجعة سريعة قبل DOM؟ ارجع إلى مقدمة Strings أو شاهد طريقة الدمج الحديثة في Template Literals.

المحرر الذكي

اكتب الكود وشاهد النتيجة فوراً

جرب الآن مجاناً
قناة ديف عربي

تابع أحدث الدروس والتحديثات مباشرة على واتساب

انضم الآن