کار با رشته ها در جاوا اسکریپت – بخش دوم - پردازش زیر رشته ها
پردازش بخشهایی از رشته
به طور کلی با انجام عملیات زیر میتوانیم بخشهایی از رشته را پردازش کنیم :
1- خواندن یک کاراکتر از یک رشته
2- بدست آوردن قسمتی از یک رشته
3- جستجوی یک رشته درون رشته دیگر
4- قطعه قطعه کردن رشته (Split)
5- به هم چسباندن رشته (Join)
خواندن یک کاراکتر از یک رشته
برای خواندن کاراکتر بخصوصی از یک رشته تنها کافی است تا اندیس (مکان) آن را با استفاده از متد charAt() بخوانیم. مثلا برای آن که بخواهیم دومین کاراکتر یک رشته را بخوانیم، از charAt(1) استفاده میکنیم
نکته: در جاوااسکریپت اندیس آرایه ها از صفر شروع میشود. بنابراین اولین کاراکتر در اندیس صفر، یکمین کاراکتر در اندیس 1 و ... قرار دارند.
var str=”123456”;
document.write(str.charAt(1));
در مثال بالا عبارت 2 روی صفحه چاپ خواهد شد.
بدست آوردن قسمتی از یک رشته
برای بدست آوردن قسمتی از یک رشته کافی است تا اندیس کارکتر آغازین و اندیس کاراکتر پایانی را به متد substring() بدهیم تا قسمت مورد نظر را استخراج کند.
مثلا فرض کنید رشته ای داریم که میدانیم از کاراکتر 20 ام آن به بعد دیگر به درد نمیخورد و نیازی به ذخیره سازی آن نداریم. و تنها 20 کاراکتر اول آن رشته برایمان اهمیت دارد.
بنابراین برای استخراج کاراکترهای مفید به این شکل عمل میکنیم:
var str=”some large string ………………………………..”
str=str.substring(0,20);
نکته: در متد substring ترتیب اندیس ها مهم نیست. یعنی عبارت بالا را میتوان به صورت زیر هم نوشت:
str=str.substring(20,0);
این رفتار به این دلیل است که این متد در هر صورت عدد کوچکتر را بعنوان اندیس آغازین در نظر میگیرد.
جستجوی یک رشته درون رشته دیگر
بسیار وقتهاست که نیاز میشود بدانیم آیا رشته مورد نظر ما در درون خود حاوی رشته بخصوصی میباشد یا خیر.
مثلا فرض کنید که کاربری در جعبه متنی مربوط به رزومه کاری خود، انواع زبانهای برنامه نویسی که با آنها کار کرده است را نوشته است. اکنون ما میخواهیم بدانیم آیا او با زبان C# نیز کار کرده است یا خیر.
برای انجام این کار از متد indexOf() استفاده میکنیم. این متد در صورتی که رشته ای که ما به آن میدهیم در رشته اصلی موجود باشد، اندیس رشته مورد جستجو در رشته اصلی را برمیگرداند. در صورتی که رشته را پیدا نکند عدد -1 برخواهد گردانید
var str=”Java C# Asp.Net assembly Fox ”;
if( str.indexOf(“C#”) > 0 )
document.write(“you have worked with C#”);
نکته: از آنجایی که ممکن است در رشته ای که کاربر وارد کرده است، کلمه C# را با حروف کوچک وارد کرده باشد، لذا بهتر است ابتدا آنچه کاربر وارد کرده را به حروف کوچک تبدیل کنیم و سپس با حروف کوچک در آن جستجو کنیم
var str=”Java C# Asp.Net assembly Fox ”;
str=str.toLowerCase();
if( str.indexOf(“c#”) > 0 )
document.write(“you have worked with C#”);
نکته : در صورتی که رشته وارد شده حجیم باشد این کار چندان صحیح نیست چرا که تبدیل یک رشته بزرگ به حروف کوچک زمان بر است و در چنین شرایطی شاید بهتر باشد حالتهای ممکن را جستجو کنیم
var str=”Java C# Asp.Net assembly Fox ”;
if( str.indexOf(“c#”) > 0 || str.indexOf(“C#”) > 0)
document.write(“you have worked with C#”);
البته اگر تعداد حالتهای ممکن زیاد باشد بهتر است از همان روش اول استفاده نماییم. مثلا در جستجوی رشته Computer که از 8 کاراکتر تشکیل شده است، 16 حالت مختلف داریم!!!
---------------------------------------------------------------------------------
در جاوا اسکریپت هم میتوانیم مدیریت خطا داشته باشیم! شاید این کار برای بسیاری از برنامه نویسانی که آشنایی چندانی با جاوا اسکریپت ندارند عجیب باشد اما این کار شدنی است!
منظور از مدیریت خطا، مدیریت خطای زمان اجرا است. گاهی اوقات در زمان اجرا خطاهای پیش بینی نشده ای رخ میدهد که عدم مدیریت آنها متیواند منجر به کارکرد نادرست صفحه وب و در نتیجه زیر سوال رفتن کل برنامه گردد.
در این مقاله خواهیم آموخت که چگونه میتوانیم خطاهای زمان اجرا را مدیریت کنیم.
برای مدیریت خطا در جاوا اسکریپت دو راه وجود دارد. راه اول که یک راه قدیمی میباشد، استفاده از رخدادی به نام onerror میباشد. این رخداد زمانی فعال میشود که در قطعه کد جاوا اسکریپت نوشته شده، خطایی رخ دهد. پس از رخ دادن خطا و فعال شدن این رخداد، تابعی که در تعریف این رخداد مشخص کرده ایم فراخوانی میشود. این تابع را ما خودمان تعریف میکنم و در آن کدهای مربوط به مدیریت خطا را مینویسیم.
برای تعریف کردن این رخداد این گونه رفتار میکنیم:
بنابراین در این صفحه هر زمان که خطایی رخ دهد، مشخصات آن خطا به کاربر نشان داده خواهد شد. البته در این جا منظور از کاربر، همان کاربر برنامه نویس است که در حال توسعه و تست برنامه است. مسلما در زمان اجرا به کاربر معمولی هرگز نباید محتویات خطا نشان داده شود و به جای آن میتوان پیغام خطای سفارشی خودمان را به کاربر نشان دهیم.
کد برنامه فوق چنین است:
--------------------------------------------------------------------------------
مدیریت استثناها و خطاها در جاوا اسکریپت – بخش دوم
در بخش قبلی در خصوص مدیریت خطاها با استفاده از رخداد onerror صحبت کردیم. در این بخش روش ساخت یافته تر و مدرن تری را به شما نشان خواهیم داد که استفاده از آن به مراتب ساده تر و بسیار کارامد تر خواهد بود.
در زبانهای شیء گرا از ساختاری به نام try catch استفاده میکنیم. این ساختار بر خلاف روش قبلی میتواند بارها در طول برنامه تکرار شود و به ازای هر خطا، یک ساختار و کد مدیریت کننده بخصوص داشته باشد.
در این روش ابتدا کدی را که مستعد خطا میباشد و احتمال میدهیم در زمان اجرا در آن خطا (Exception) رخ دهد، در بلوکی به نام try مینویسیم:
try
{
adddlert("Welcome guest!");
}
سپس در ادامه ساختاری به نام catch خواهیم آورد که این ساختار وظیفه رسیدگی کردن به خطایی (استثنایی) را دارد که در بلوک try ماقبل نوشته شده است.
دقت کنید که کدها موجود در قسمت Catch فقط و فقط در صورت رخ دادن خطا اجرا میگردند و در حالت عادی اجرا نخواهند شد. علاوه بر آن هر بلوک catch تنها به خطای بلوک try متناظر خود رسیدگی میکند و به دیگر قسمتهای برنامه کاری ندارد.
نمونه ای از این بلوک را میتوانید ببینید:
catch(err)
{
txt="There was an error on this page.\n\n";
txt+="Click OK to continue viewing this page,\n";
txt+="or Cancel to return to the home page.\n\n";
if(!confirm(txt))
{
document.location.href="http://www.w3schools.com/";
}
}
امکان دیگری که میتوانیم اضافه کنیم بلوکی به نام finally است. کدهای این بلوک تحت هر شرایطی (رخ دادن یا عدم رخ دادن خطا )اجرا خواهند شد.
در صورت عدم وجود این بلوک، میدانیم که یا قسمت try اجرا میگردد یا قسمت catch . اما گاهی نیاز داریم در هر صورت و به طور مستقل از این دو بلوک، کدی بنویسیم که بدون در نظر گرفتن وضعیت خطا، اجرا گردد.
finally
{
alert(“welcome to my web site”)
}
یک نمونه از کد برنامه را در زیر میبینید: