١.٣ السلاسل النصية¶
وصل سلسلة نصية بأخرى¶
لنعرض الكلمة "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 في السلسلة.
مشروع: الخصم¶
-
يقدّم متجر خصمًا بنسبة 50% على الطلبات التي تزيد قيمتها على 100 دولار.
-
اعرض الرسالة "Congrats, you get a 50% discount. Thank you for buying our products" باستخدام أحرف صغيرة للعملاء الذين حصلوا على الخصم.
- إذا حصل العميل على الخصم، فاعرض اسمه بعدد مرات يساوي عدد أحرف الاسم.
- اعرض الرسالة "Sorry, you get nothing. Your subtotal should be more than $100" باستخدام أحرف كبيرة للعملاء الذين لم يحصلوا على الخصم.
- إذا لم يحصل العميل على الخصم، فاعرض اسمه باستخدام أحرف كبيرة.
- اشترت عميلة اسمها Soso منتجات بقيمة 150 دولارًا.
- اشترى 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