انتقل إلى المحتوى

١.٣ السلاسل النصية

وصل سلسلة نصية بأخرى

لنعرض الكلمة "Hello" في وحدة التحكم.

console.log("Hello");

ماذا لو أردنا عرض "Hello Nawras"؟ نورس اسمي، ويمكنك استبداله باسمك. نكتب الشيفرة التالية:

console.log("Hello Nawras");

لنُضف جملة أخرى أسفلها: "Welcome to our website, Nawras":

console.log("Hello Nawras");
console.log("Welcome to our website, Nawras");

لنعرض الجمل نفسها، لكن مع الترحيب بعلي هذه المرة:

console.log("Hello Ali");
console.log("Welcome to our website, Ali");

يتغيّر الاسم في رسالة الترحيب بحسب الشخص. لنُنشئ المتغير name:

var name = "Ali";

كيف نُضيف الاسم إلى رسالة الترحيب؟ يمكننا استخدام العامل + . لنجرّب:

var name = "Ali";
console.log("Hello " + name);
console.log("Welcome to our website, " + name);

يمكننا استخدام العامل + لإلحاق سلسلة نصية بنهاية سلسلة أخرى. تُسمّى هذه العمليةوصل السلاسل النصية (Concatenation)):

var name = "Ola";
var greet = "Hello " + name;
var welcome = "Welcome to our website, " + name;
console.log(greet);
console.log(welcome);

ما السلسلة النصية؟

السلسلة النصية تسلسل من المحارف. إليك بعض الأمثلة:

  • "Hello"

  • "Welcome to our website"

  • "Hello Ali"

  • 'Hello, user1246'

  • "Nawras"

  • "I went to the park yesterday"

  • '123, this is how I count to three!'

  • "%%^&##fdgdg 5669sfdfk"

تُحاط السلاسل النصية بعلامتي اقتباس مفردتين أو مزدوجتين. إذا كتبنا كلمة بلا علامتي اقتباس، فستُفسَّر على أنها اسم متغير. لنجرّب:

var answer = No;
console.log("Our answer is: " + answer );

Uncaught ReferenceError: No is not defined ماذا يعني ذلك؟ يعني أن المتغير No غير مُعرّف في الشيفرة. حدث ذلك لأننا لم نُحط النص No بعلامتي اقتباس. لنُصلح ذلك:

var answer = "No";
console.log("Our answer is: " + answer );

الآن تعمل الشيفرة، وستحصل على: Our answer is: No

لنتدرّب على السلاسل النصية

التمرين 1: يريد صديقنا علي أن ترحّب به ثلاث مرات. اعرض رسالة الترحيب به ثلاث مرات في وحدة التحكم.

var name = "Ali";
var greet = "Welcome";
console.log(greet + greet + greet + name);

WelcomeWelcomeWelcomeAli تظهر في وحدة التحكم بلا مسافات بين الكلمات. لنُصلح ذلك:

var name = "Ali";
var greet = "Welcome";
console.log(greet + " " + greet + " " + greet + " " + name);

Welcome Welcome Welcome Ali تظهر في وحدة التحكم. رائع، لكن الشيفرة طويلة، أليس كذلك؟ جرّب التالي:

var name = "Ali";
var greet = "Welcome ";
console.log(greet.repeat(3) + name);

ستحصل على النتيجة نفسها: Welcome Welcome Welcome Ali

التمرين 2: تريد صديقتنا علا أن ترحّب بها عشر مرات. اعرض رسالة الترحيب بها عشر مرات في وحدة التحكم.

var name = "Ola";
var greet = "Welcome ";
console.log(greet.repeat(10) + name);

ستحصل على: Welcome Welcome Welcome Welcome Welcome Welcome Welcome Welcome Welcome Welcome Ola

التمرين 3: احسب عدد المحارف في الجملة "I count 1 to 10: 1 2 3 4 5 6 7 8 9 10". تلميح: استخدم string.length

var sentence = "I count 1 to 10: 1 2 3 4 5 6 7 8 9 10";
console.log(sentence.length);

ستكون النتيجة: 37

التمرين 4: احسب عدد أحرف اسم مُعطى، ثم اعرض الاسم بعدد مرات يساوي عدد أحرفه. مثلًا، يتكوّن "Ali" من ثلاثة أحرف، لذا نعرض "Ali Ali Ali".

var name = "Wolfeschlegelsteinhausenbergerdorff ";
var nameLength = name.length;
console.log(name.repeat(name.length));

معلومة طريفة: Wolfeschlegelsteinhausenbergerdorff اسم حقيقي! يمكنك البحث عنه.

سيظهر هذا الاسم الطويل في وحدة التحكم بعدد مرات يساوي طوله.

التمرين 5: اعرض الرسالة "You are not allowed here" في وحدة التحكم، مع تحويل الكلمة التالية إلى أحرف كبيرة: غير. تلميح: استخدم string.toUpperCase()

console.log("You are " + 'not'.toUpperCase() + " allowed here");

ستحصل على: You are NOT allowed here

التمرين 6: اعرض الرسالة "WELCOME TO OUR WEBSITE" بأحرف صغيرة. تلميح: استخدم string.toLowerCase().

var welcome = "WELCOME TO OUR WEBSITE";
console.log(welcome.toLowerCase());

ستحصل على: welcome to our website

التمرين 7: أنشئ متغيرين. الأول اسمه nameويحمل اسم الشخص، والثاني اسمه professionويحمل مهنته. اعرض الاسم والمهنة في جملة واحدة، مثل: Ali is a programmer.

var name = "Jad";
var profession = "engineer";
console.log(name + " is an " + profession );

ستحصل على: Jad is an engineer

التمرين 8: أنشئ سلسلتين نصيتين مختلفتين، واعرض ناتج وصلهما في وحدة التحكم. مثلًا: string1 = "abc" وstring2 = "def"، فتظهر "abcdef". تلميح: استخدم string1.concat(string2)

var string1 = "abc";
var string2 = "def";
console.log(string1.concat(string2));

ستحصل على: abcdef

التمرين 9: شغّل الشيفرة التالية وحاول فهمها.

var letters = "abcdef";
console.log(letters.indexOf("a"));
console.log(letters.indexOf("b"));
console.log(letters.indexOf("c"));
console.log(letters.indexOf("d"));
console.log(letters.indexOf("e"));
console.log(letters.indexOf("f"));

ستكون النتيجة:

0
1
2
3
4
5

التمرين 10: شغّل الشيفرة التالية وحاول فهمها.

var greet = "Welcome";
console.log(greet.indexOf('c'));

ستحصل على: 3

يمكنك استنتاج أن string.indexOf() تساعدك على إيجاد موضع محرف في سلسلة نصية.

ملاحظة (١): يبدأ ترقيم المواضع من 0؛ فموضع المحرف الأول 0، والثاني 1، وهكذا.

التمرين 11: أوجد موضع الحرف a في السلسلة "I went to the park yesterday.".

var sentence = "I went to the park yesterday.";
console.log(sentence.indexOf('a'));

ستحصل على: 15.

لاحظ أن ستحصل على موضع أول ظهور للحرف a في السلسلة.

مشروع: الخصم

  1. يقدّم متجر خصمًا بنسبة 50% على الطلبات التي تزيد قيمتها على 100 دولار.

  2. اعرض الرسالة "Congrats, you get a 50% discount. Thank you for buying our products" باستخدام أحرف صغيرة للعملاء الذين حصلوا على الخصم.

  3. إذا حصل العميل على الخصم، فاعرض اسمه بعدد مرات يساوي عدد أحرف الاسم.
  4. اعرض الرسالة "Sorry, you get nothing. Your subtotal should be more than $100" باستخدام أحرف كبيرة للعملاء الذين لم يحصلوا على الخصم.
  5. إذا لم يحصل العميل على الخصم، فاعرض اسمه باستخدام أحرف كبيرة.
  6. اشترت عميلة اسمها Soso منتجات بقيمة 150 دولارًا.
  7. اشترى Sami منتجًا بقيمة 50 دولارًا.
var customer1 = "Soso";
var customer2 = "Sami";
var success = "Congrats, you get 50% discount";
var failure = "Sorry, you get nothing. You should buy for the value more than $100";
console.log(success.toLowerCase() + " " + customer1.repeat(customer1.length));
console.log(failure.toUpperCase() + " " + customer2.toUpperCase());

ستكون النتيجة:

congrats, you get 50% discount SosoSosoSosoSoso
SORRY, YOU GET NOTHING. YOU SHOULD BUY FOR THE VALUE MORE THAN $100 SAMI