مدونة علم البرمجة والحاسوب
من حقك ان تتعلم اكثر

دورة جافا سكربت - Javascript الدرس السابع



يحتوي على

*** اشكال السلاسل الحرفيه
*** مكونات السلاسل الحرفيه
*** ربط السلاسل الحرفيه
*** البحث عن حرف معين داخل سلسله حرفيه
*** تقسيم السلسله الحرفيه
*** السلاسل الحرفيه الفرعيه
*** التغيير الى السلاسل الحرفيه
*** تغيير حال الحرف
*** الحصول على الاعداد من السلاسل الحرفيه
*** عرض قيم المتغيرات في السلاسل الحرفيه
*** كتابه كود للسلاسل الحرفيه



أشكال السلاسل الحرفيه

السلاسل الحرفيه في لغه جافا سكربت عاده ما يتم تمييزها بوجود علامات الاقتباس المزدوجه

والتي اما تكون خاليه تماما لا تشتمل على ايه قيمه او يكون مدرج بها رمز او حرف

واحد او اكثر مما يجعلنا نطلق عليها السلسله الحرفيه



كود:
var str1="My First String";

var str2="";

var str3="2";

var str4="null";

لذا تقوم علامات الاقتباس المزدوجه في str2 بتحديد نوع القيمه في المتغير كسلسله

حرفيه بغض النظر عن خلو السلسله الحرفيه هنا من ايه بيانات ويتم التعامل مع

القيمه العدديه المحدده في str3 على انها سلسله حرفيه بطريقه تلقائيه عند ا

دراجها بين علامتي الاقتباس ولكن الكلمه الرئيسيه null في لغه جافا سكربت

تعتبر هي نفسها بمثابه سلسله حرفيه عند ادراجها داخل علامتي الاقتباس

وتعتبر السلسله الحرفيه بمثابه مجموعه من الاحرف بحيث يحتوي كل حرف على البيانات الخاصه

به مثل العناصر الموجوده في المصفوفه التي تم تعريفها

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

وتقوم بتطبيق خصائص المصفوفه عند استخدام السلاسل الحرفيه

ويقوم المثال التالي بالمقارنه بين خاصيه array.length

وخاصيه string.length


كود:
<SCRIPT TYPE="text/javascript">

<!--

var a= "JavaScript Strings";

alert(a.length);

//-->

</SCRIPT>

**** ملاحظه ****

يتم التعامل مع المسافات على انها احرف ايضا


مكونات السلاسل الحرفيه

تعتبر السلاسل الحرفيه بمثابه مصفوفات يكون فيها كل عنصر بمثابه حرف ويمكن الاشاره

اليه بنفس الطريقه التي يشار بها الى عناصر المصفوفه المنتظمه ومثل المصفوفات

فان الحرف الاول يبدأ عند رقم الفهرس صفر(0)

ويمكنك العثور على هذه الاحرف باستخدام تقنيه string.chartAt()

التي تتعامل مع رقم فهرس العنصر كوسيط خاص بها ويقوم المثال التالي بقراءه الحروف

في السلسله ويقوم بادخال التغييرات طبقا للحرف الموجود


كود:
<SCRIPT TYPE="text/javascript">

<!--

var str="linger in",newstr="";

var a="First letter:"+str.charAt(0);

var z="Final letter:"+str.charAt(str.length-1);

for(var i=0;i<str.length;i++){

if(str.charAt(i)!="i")newstr+=str.charAt(i);

else newstr+="o"

}

var result="STRINGS\n\n";

result +="New string:"+newstr+"\n";

alert(result+a+"\n"+z);

//-->

</SCRIPT>

ربط السلاسل الحرفيه

يستخدم المعامل "+" في الربط بين السلاسل الحرفيه ويستخدم على نطاق واسع في الكود الخاص

بالمثال الموجود ويمكن انشاء سلسله حرفيه جديده بحيث تكون السلسله الاولى متبوعه بالثانيه

ويقوم المثال التالي بالربط بين عدد من القيم الخاصه بالمتغيرات في سلسله حرفيه

واحده بغض النظر عن نوع البيانات الاصليه لان لغه جافا سكربت تقوم

بعمل تحويل تلقائي لنوع البيانات


كود:
<SCRIPT TYPE="text/javascript">

<!--

var num=99;

var flt=98.6;

var bool=true;

var str1="Although";

var str2="F is cited as \"body temperatrue\"";

var str3="\nthe";

var str4="range is from about 97 to";

var str5="F.";

alert(str1+flt+str2+str3+bool+str4+num+str5);

//-->

</SCRIPT>

البحث عن حرف معين داخل سلسله حرفيه

يمكن للغه جافا سكربت ان تقوم بالبحث عن اي حرف او سلسله حرفيه فرعيه

يتم تعيينها كوسيط في تقنيه string.index وفي حاله حدوث التطابق تقوم التقنيه

بعرض اول موضع يرد فيه الحرف المطابق او السلسله الحرفيه الفرعيه داخل السلسله

الحرفيه التي يتم البحث عنها واذا لم يحدث اي نوع من التطابق فان التقنيه string.indexOf

تقوم بعرض القيمه -1

ويستخدم المثال التالي تقنيه string.indexOf للبحث عن نقطه وكذلك الحرف @ داخل

السلسله الحرفيه الخاصه بالبريد الالكتروني بهدف التاكد من صحتها


كود:
<SCRIPT TYPE="text/javascript">

<!--

var str="NaWaL2040@HotMail.com";

var att=str.indexOf("@");

var dot=str.indexOf(".");

var hsh=str.indexOf("#");

var fmt=((att!=-1)&&(dot!=-1))?"valid":"invalid";

var res="Format is" +fmt;

res +="\n@ at" +att;

res +="\nDot at" +dot;

res +="\n\nHash is" +hsh;

alert(res);

//-->

</SCRIPT>

تقسيم السلسله الحرفيه

من الممكن ان يتم فصل مكونات السلسله الحرفيه باستخدام تقنيه string.split في

لغه جافا سكربت وينبغي ان يقوم الوسيط المعين في هذه التقنيه بتحديد حرف معين

ليكون بمثابه عنصر التحديد الذي سيتم من عنده فصل السلسله الحرفيه

في بعض الاحيان يكون عنصر التحديد عباره عن مسافه ولذلك فان العباره التي تحتوي

على مسافه عاديه سيتم فصلها في مصفوفه تتكون من مجموعه من الكلمات المفرده

ويمكنك الرجوع الى كل كلمه باستخدام رقم الفهرس الخاص بمصفوفه السلسله الحرفيه

المقسمه مثل ايه مصفوفه اخرى ويوضح المثال التالي استخدام تقنيه string.split في مثال

اخر بحيث تستخدم العناصر في قاعده البيانات حرف التبديل كعنصر تحديد


كود:
<SCRIPT TYPE="text/javascript">

<!--

var str="JavaScript in easy steps";

var ss=str.split("");

var bk="JavaScript in easy steps|Mike McGrath|$9.99";

var bks=bk.split("|");

var res="Topic :" +ss[0];

res +="\nTitle :" +bks[0];

res +="\nAuthor :" +bks[1];

res +="\nPrice :" +bks[2];

alert(res);

//-->

</SCRIPT>

السلاسل الحرفيه الفرعيه

يمكنك الحصول على سلسله حرفيه فرعيه من السلسله الحرفيه الحاليه

باستخدام تقنيه string.substringالتي يجب ان تحتوي على وسيطين

لتحديد مواضع البدايه والنهايه للسلسله الحرفيه الجديده المطلوبه داخل السلسله

الحرفيه الاصليه وسيكون الحرف الموجودفي وضع البدايه في الوسيط بمثابه اول حرف في السلسله

الحرفيه الفرعيه المعروضه اما اخر حرف في السلسله الحرفيه الفرعيه فسيصبح بمثابه

الحرف الاخير في الوسيط ويمكنك عرض السلسله الحرفيه الفرعيه من السلسله الاصليه

باستخدام تقنيه string.substr التي تتطلب ايضا وسيطين وعندما يقوم الوسيط الاول

مره اخرى بتحديد وضع البدايه الخاص بالسلسله الحرفيه الفرعيه فان الوسيط الثاني سيقوم بتحديد

طول السلسله الفرعيه من اجل عرضها ويوضح المثال التالي التقنيات الخاصه بالسلاسل

الحرفيه الفرعيه


كود:
<SCRIPT TYPE="text/javascript">

<!--

var str="JavaScript in easy steps";

var sub1=str.substring(14,19)+str.substring(0.11)

var sub2=str.substr(14,5)+str.substr(0.10);

var res="Substring method :" +sub1;

res +="\nSubstr method :" +sub2;

alert(res);

//-->

</SCRIPT>

التغيير الى السلاسل الحرفيه

يمكن استدعاء الداله المسئوله في لغه جافا سكربت عن تحويل انواع اخرى من البيانات

الى سلاسل حرفيه من خلال اشتدعاء تقنيه object.toString() وتعتبر هذه الداله اساسيه

والهدف منها دائما عرض السلسله الحرفيه الخاصه بالكائن الذي تم الاستعلام عنه

حتى لو لم يكن هذا الكائن نفسه بمثابه سلسله حرفيه

في هذا المثال يتم اضافه عددين صحيحين متبوعين بسلسله حرفيه مرتبه وكذلك رقم صحيح

بحيث يتحول الرقم الصحيح الى قيمه داخل السلسله الحرفيه وفي النهايه يتم عرض تقنيه

object.toString() مع نوع اخر من البيانات لتوضيح ان المخرجات التي

سيتم عرضها سيتضح منها نوع الكائن


كود:
<SCRIPT TYPE="text/javascript">

<!--

var num=9;

var nostr=num+9;

var adstr=num.toString()+9;

var img=new Image();

var res="No strings :"+nostr;

res +="\nAdded strings :"+adstr;

res +="\nImage :" +img.toString();

alert(res);

//-->

</SCRIPT>

**** ملاحظه ****

يمكن استخدام تقنيه toString في اي نص يتم كتابته بلغه جافا سكربت

من اجل الكشف عن بعض المعلومات التي تتعلق بالكائن


تغيير حال الحرف

يمكن تغيير حاله الحروف في السلسله الحرفيه باستخدام تقنيه string.toUpperCase()

او string.toLowerCase حتى تصبح جميع الاحرف واحده

تعتبر هذه التقنيات هي الاكثر استخداما عند مقارنه المدخلات التي يتم تعيينها من قبل

المستخدم للتاكد من ان جميع الحروف تمت كتابتها بشكل واحد داخل النص سواء في شكل حروف

كبيره او صغيره وفي المثال التالي تقوم تقنيه بعرض string.toLowerCase بتحويل المدخلات

التي تم تعيينها من قبل المستخدم في حقل النص من اجل مقارنتها مع القيمه الخاصه بالمتغير

والمكتوبه بخط صغير


كود:
var entry=document.forms[0].textfield.value;

if(entry.toLowerCase() =="castle")alert("Accepted");

else alert("Refused");

الحصول على الاعداد من السلاسل الحرفيه

يمكنك استخراج عدد من بدايه السلسله باستخدام تقنيه parseInt() و parseFloat()

وتقوم تقنيه parseInt() بتحليل السلسله وعرض اول قيمه صحيحه تم تعيينها

بينما تقوم تقنيه parseFloat() بالعمل بنفس الطريقه ولكنها تقوم بعرض اعداد تشتمل

على علامه عشريه

واذا وجدالمحلل اللغوي اي قيمه غير عدديه قبل عرض الرقم فانه سيشير اليها من خلالNaN

التي تعتبر بمثابه اختصار لـNot-a-Number ويقوم المثال بعرض قيمه parseInt() و parseFloat()

كما يوضح ان داله isNaN() الخاصه بلغه جافا سكربت تقوم بالبحث عن قيمه غير عدديه


كود:
<SCRIPT TYPE="text/javascript">

<!--

var str="66.6% PASS RATE";

var res="Integer :" +parseInt(str);

var res="\nFloat :" +parseFloat(str);

var badstr="PASS RATE66.6%";

res +="\nNon-numeric :"+parseInt(badstr);

res +="\nFound :";

res +=isNaN(parseInt(badstr))?"Character":"Number";

alert(res);

//-->

</SCRIPT>

**** ملاحظه ****

لا يمكن البحث عن قيمه غير عدديه من خلال معامل التساوي "=="


عرض قيم المتغيرات في السلاسل الحرفيه

من الممكن في داله eval() الموجوده في لغه جافا سكربت ان يتم تعيين وسيط

عباره عن سلسله حرفيه تحتوي على الكود الذي تمت كتابته بلغه جافا سكربت

والمراد التحقق منه التقرير بصحته او خطاه اذا كانت السلسله الخاصه من هذا الكود

تحتوي على عبارات برمجيه فانه سيتم تنفيذها من خلال داله eval() وسيتم عرض القيمه الاخيره

على الرغم من ان هذه الداله تعتبر ميزه فعاله في لغه جافا سكربت فانها غالبا ما

تستخدم لعرض القيم الخاصه بالمتغير في شكل سلسله حرفيه وفي المثال التالي يقوم

النص البرمجي بتعيين قيمه عباره عن سلسله حرفيه ليتم عرضها في مربع النص الخاص

بالنموذج والذي تم تسميته بـ textfield في الكود المكتوب باسفل بلغه html

ويتم تخزين السلسله المعروضه واسم مربع النص في المتغيرات التي يتم التحقق

منها خلال داله eavl()


كود:
var inputname="textfield";

var inputtext="\"JavaScript Text\"";

eval("document.forms[0]."+inputname+".value="+inputtext);

والان يتم عرض سلسله النص داخل حقل النص لان سلسله الكود يتم تقييمها على النحو التالي


كود:
document.forms[0].textfield.value="JavaScript Text";

**** ملاحظه ****

تذكر ان تقوم بحذف علامتي الاقتباس داخل السلسله الحرفيه لتجنب ايه اخطاء في الرسائل


كتابه كود للسلاسل الحرفيه

تحتوي جميع الاحرف على كود عددي موحد يمكن عرضه في كل حرف في السلسله باستخدام

تقنيه string.ChartCodeAt() وتتطلب هذه التقنيه تعيين فهرس لكل حرف داخل السلسله كوسيط لها

وعلى النقيض من ذلك يمكن الحصول على الاحرف من الكود الموحد باستخدام داله

string.fromChar Code() الخاصه بلغه جافا سكربت التي تتعامل مع القيم العدديه ذات الكود

الواحد كوسيط خاص بها ويتكرر المثال التالي في بدايه السلسله ويقوم بوضع فاصله

داخل السلسله الحرفيه كعنصر تحديد في القيم الخاصه بالحروف الموحده ويتم انشاء

مصفوفه من القيم العدديه الموحده في دوره التكرار الثانيه لعرض الحرف الخاص بكل عدد


كود:
<SCRIPT TYPE="text/javascript">

<!--

var str="Code Fun";

var enc="";

var unc="";

for(var i=0;i< str.length;i++){

enc += str.charCodeAt(i)+",";

}

var ss=enc.split(",");

for(var i=0;i< ss.length;i++){

unc +=String.fromCharCode(ss[i]);

}

alert("Encoded:"+enc+"\nUnencoded:"+unc);

//-->

</SCRIPT>

انتهى الفصل السابع

أرشيف المدونة الإلكترونية

من انا ؟