ایجاد اشیاء رشته ای با استفاده از کلاس string
در جاوا اسکریپت برای ایجاد یک شیء رشتهای از کلاس new String استفاده میشود. به کد زیر توجه کنید:
var oSobject = new String("Hello this is a string object"); alert(oSobject); //result Hello this is a string object
الحاق دو رشته
برای الحاق دو رشته از یک متد به نام ()concat. استفاده میشود. به مثال زیر توجه کنید:
var oSobject = new String("Hello this is a string object"); var sResult = oSobject.concat(" a string object"); alert(sResult); //result Hello this is a string object
همچنین میتوانید به جای این متد از عملگر + نیز استفاده کنید.
عملگر + بر اساس نوع عملوندها رفتار متفاوتی از خود نشان میدهد. با این عملگر میتوان سه نوع کار انجام داد. گاها موجب الحاق رشته خواهد شد و گاها موجب جمع دو عدد. به تکه کدهای زیر دقت کنید.
مثال برای نوع اول : درصورتی که هر دو عملوند عددی باشند.
var sResult = 10+10; alert(sResult); //result 20
در این نوع حاصل جمع دو عدد نمایش داده میشود.
مثال برای نوع دوم : درصورتی که هر دو عملوند رشته ای باشند.
var sResult = "10"+"10"; alert(sResult); //result 1010
در این نوع رشته اول به رشته دوم الحاق میشود.
مثال برای نوع سوم : درصورتی که یکی از عملوندها عددی و دیگری رشته ای باشد.
var sResult = "10"+10; alert(sResult); //result 1010
در این نوع عملوندی که عددی است به رشته ای تبدیل شده و نتیجه الحاق آن دو رشته خواهد بود.
پیدا کردن کاراکتر موجود در یک موقعیت
در ادامه پست آموزشی رشته ها در جاوا اسکریپت با ما همراه باشید. در جاوا اسکریپت شما میتوانید عددی را در نظر بگیرید؛ و جاوا اسکریپت با استفاده از متد ()charAt. کاراکتری که معادل آن عدد است برمیگرداند. مثال:
var oSobject = new String("Hello this is a string object"); alert(oSobject.charAt(6)); //result t
اگر بخواهید که به جای به دست آوردن کاراکتر مورد نظر کد آن را به دست آورید، میتوانید از یک متد به نام ()charCodeAt. استفاده کنید. برای مثال:
var oSobject = new String("Hello this is a string object"); alert(oSobject.charCodeAt(6)); //result 116
عدد ۱۱۶ به دست آمده کد دستوری حرف t میباشد.
پیدا کردن موقعیت یک کاراکتر
برعکس اگر شما بخواهید تشخیص دهید که یک کاراکتر در رشته وجود دارد یا نه میتوانید از متدهای ()indexOf. و ()lastIndexOf. استفاده کنید. کار هردوی این متدها یکسان است. تنها تفاوتی که این متدها دارند در این است که متد ()indexOf. از ابتدای رشته (اندیس صفر) و متد ()lastIndexOf. از انتهای رشته به جستجو میپردازد. درصورتی که کاراکتر مورد نظر یافت شد آن را برمیگرداند و در غیر این صورت مقدار -۱ را برمیگرداند. به مثال زیر توجه کنید:
var oSobject = new String("Hello this is a string object"); alert(oSobject.indexOf("e")); alert(oSobject.lastIndexOf("e")); //result 1 //result 26
در متدهای ()indexOf. و ()lastIndexOf. میتوان تعیین کرد که جستجو از کدام کاراکتر شروع شود. برای مثال :
var oSobject = new String("Hello this is a string object"); alert(oSobject.indexOf("e",3)); alert(oSobject.lastIndexOf("e")); //result 26 //result 26
همانطور که میبینید پس از اندیس ۳ چون تنها یک بار کاراکتر e تکرار شده است بنابراین خروجی هردو متد یکسان است.
مقایسه رشته ها
متد دیگری که در مبحث رشته ها در جاوا اسکریپت میتوان به آن اشاره کرد، متد ()localeCompare.است. کار این متد مقایسه رشتهها با یکدیگر است.
این متد یک مقدار رشتهای میگیرد و آن را با رشته اصلی مقایسه میکند. این متد سه مقدار را برمیگرداند.
- مقدار ۱ : درصورتی که شیء رشته ای بزرگتر باشد.
- مقدار ۰ : درصورتی که شیء رشته ای برابر باشد.
- مقدار ۱- : درصورتی که شیء رشته ای کوچکتر باشد.
برای درک بهتر به تکه کد زیر توجه کنید:
var oSobject = new String("HelloWorld"); alert(oSobject.localeCompare("HelloWorld")); alert(oSobject.localeCompare("hello world")); alert(oSobject.localeCompare("hi")); //result 0 //result 1 //result -1
جدا کردن زیر رشته ای از رشته دیگر
برای جداکردن زیر رشته ها در جاوا اسکریپت، از رشته اصلی سه تابع به نام های ()slice. و ()substring. و ()substr. وجود دارد.
هرسه این متد ها یک یا دو مقدار میگیرند. زمانی که تنها یک مقدار داده شود از شروع مقدار تا انتهای رشته جدا میشود.
در متد های ()slice. و ()substring. زمانی که دو مقدار داده شود، مقدار اول شروع و مقدار دوم پایان جداسازی را معیّن میکند. دقت کنید که خود مقدار دومی که برای جداسازی داده میشود محسوب نمیشود، برای مثال در صورتی که مقدار ۳ و ۷ داده شود از خود مقدار ۳ تا قبل از مقدار ۷ جداسازی میشود. (اندیس ها از صفر شروع میشود)
برای درک بهتر این مسئله به تکه کد زیر توجه کنید:
var oSobject = new String("Hello World"); alert(oSobject.slice(2)); alert(oSobject.substring(4)); alert(oSobject.slice(1,8)); alert(oSobject.substring(3,7)); //result llo World //result o World //result ello Wo //result lo W
همانطور که میبینید نحوه کار این دو تابع دقیقا مثل هم هستند. ممکن برایتان این سوال پیش بیایید که چرا این دو تابع با هم تفاوتی ندارند؟ درواقع تفاوت دارند! تفاوت آنها در کار با مقادیر منفی است.
زمانی که متد ()slice. برای مقدار دوم عددی منفی میگیرد، جست و جو از انتهای رشته صورت میگیرد. به تعریفی دیگر طول رشته با مقدار منفی جمع میشود. به مثال زیر توجه کنید:
var oSobject = new String("Hello World"); alert(oSobject.slice(1,8)); alert(oSobject.slice(1,-8)); alert(oSobject.slice(1,3)); //result ello Wo //result el //result el
در مثال بالا درصورتی که مقدار مثبت به متد داده شود از خود اولین مقدار تا دومین مقدار داده شده جست و جو صورت میپذیرد و رشته جداشده را برمیگرداند. اما درصورتی که مقدار دوم منفی باشد، برعکس جست و جو از خود اولین مقدار شروع شده، سپس مقدار دوم که منفی است از انتهای رشته جست و جو میشود و در نهایت پاسخ را برمیگرداند.
در متد ()substring. نیز مقدار منفی صفر درنظر گرفته میشود. یعنی درواقع نادید گرفته میشود انگار که تنها یک مقدار به متد داده شده است. به مثال زیر توجه کنید:
var oSobject = new String("Hello World"); alert(oSobject.substring(2,-5)); alert(oSobject.substring(2,0)); //result he //result he
در این مثال مقدار دوم صفر درنظر گرفته شده است. زمانی که مقدار دوم صفر باشد یعنی از ابتدای رشته تا مقدار مثبت که داده شده جداسازی انجام میپذیرد.
نکته: در جداسازی با دو متد ()slice. و ()substring. ترتیب اهمیتی ندارد! یعنی مقدار ۲,۵ با ۵,۲ برابر است. مقدار کوچکتر ابتدا و مقدار بزرگتر انتهای جداسازی را مشخص میکند. همچنین درصورتی که دومقدار یکسان به متد داده شود، مقدار null را برمیگرداند.
در متد ()substr. دو مقدار داده شده به این صورت است. مقدار اول همانند دیگر متد ها شروع جداسازی و مقدار دوم طول جداسازی را مشخص میکند. به تکه کد زیر توجه کنید:
var oSobject = new String("Hello World"); alert(oSobject.substr(2,2)); alert(oSobject.substr(2,-3)); //result ll //result (null)
همچنین اگر در این متد مقدار دوم صفر یا منفی داده شود مقدار null را برمیگرداند.
تبدیل حروف کوچک به بزرگ و بالعکس
در کار با رشته ها در جاوا اسکریپت شما میتوانید حروف رشته مدنظر را به کوچک یا بزرگ تبدیل کنید. برای این کار چهار متد وجود دارد که کار دو متد تبدیل حروف به بزرگ و دو متد دیگر تبدیل حروف به کوچک است. متد ()toLowerCase. برای تبدیل به حروف کوچک و متد ()toUpperCase. برای تبدیل به حروف بزرگ به کار میرود. برای آشنایی بهتر با این متد به تکه کد زیر توجه کنید:
var oSobject = new String("hEllO WoRld"); alert(oSobject.toUpperCase()); alert(oSobject.toLocaleUpperCase()); alert(oSobject.toLowerCase()); alert(oSobject.toLocaleLowerCase()); //result HELLO WORLD //result HELLO WORLD //result hello world //result hello world
سخن آخر درباره کار با رشته ها در جاوا اسکریپت
در این پست از آموزش های پیاستور درمورد رشته ها و نحوه کار با آنها صحبت کردیم. رشته ها در جاوا اسکریپت اهمیت زیادی دارند و مطمعناً شما هم علاقمند به یادگیری درباره رشته ها دارید. شما میتوانید در ادامه مجموعه پستهای آموزشی هرچه بیشتر در رابطه با جاوا اسکریپت یاد بگیرید. در پست بعدی در رابطه با اشیای درونی یا از پیش ساخته شده در جاوا اسکریپت صحبت خواهیم کرد. منتظر نظرات و پیشنهادات شما هستیم. موفق باشید.