کار با رشته ها در جاوا اسکریپت

به نام خدا باعرض سلام و وقت بخیر خدمت دوستان گرامی در راستای آموزش مقدماتی جاوا اسکریپت جلسه امروز به مبحث رشته ها در جاوا اسکریپت و نحوه کار با انها را خواهیم پرداخت.باما همراه باشید.

رشته ها در جاوا اسکریپت چیست؟

به زبان ساده یک رشته دنباله ای از حروف، اعداد، کاراکترهای خاص و مقادیر حسابی یا ترکیبی از همه است.همانطور که در مثال زیر نشان داده شده است، می‌توان رشته‌ها را با احاطه کردن رشته (یعنی کاراکترهای رشته) در داخل سینگل کوتیشن (') یا دابل کوتیشن (") ایجاد کرد:

می توانیم از کوتیشن ها در داخل یک رشته استفاده کنیم، به شرطی که با کوتیشن های اطراف رشته مطابقت نداشته باشند:

خب سوال پیش میاد چطور میتونیم از سینگل کوتیشن و دابل کوتیشن داخل رشته هایی که به ترتیب درون سینگل کوتیشن یا دابل کوتیشن قرار دارند استفاده کنیم و خطای نحوی نداشته باشیم؟ خب در اینجاست که مستر بک اسلش (\) به کمکون میاد و مارو از این مخمصه نجات میده ، به مثال زیر توجه کنین:

پس وقتی میخوایم از خود کوتیشن ها درون رشته هامون استفاده کنیم انهارو همرا بک اسلش میاریم.تاباعث ایجاد خطای نحوی نگردیم.(برای کوتیشن هایی که همجنس با کوتیشنی است که رشتمون داخلش قرارگرفته).جالبه که بدونیم به کاراکتر بک اسلش (\) کاراکتر گریز و به توالی \' و\" توالی گریز میگویند.

دنباله های گریز در جاوا اسکریپت

دنباله‌های گریز (escape sequences) برای موقعیت‌هایی که می‌خواهیم از کاراکترهایی استفاده کنیم که با استفاده از صفحه کلید قابل تایپ نیستند نیز مفید هستند. بریم چنتا مثال از این دنباله های پرکابرد بزنیم.

کاراکترهای جایگزین

حالا بریم چند مثال برای روشن شدن نحوه عملکرد توالی گریز ببینیم:

نحوه کار با رشته ها در جاوا اسکریپت

جاوا اسکریپت چندین ویژگی و متد برای انجام عملیات روی مقادیر رشته ارائه می دهد. از نظر فنی، فقط اشیا می توانند ویژگی ها و متدهایی داشته باشند. اما در جاوا اسکریپت، انواع داده‌های اولیه نیز می‌توانند مانند اشیا عمل کنند، زمانی که ما با علامت دسترسی به ویژگی (نوتیشن دات) به آنها مراجعه کنیم.(حالا کامل متوجه شدین که جاوا اسکریپت ابجکت بیس هستش؟)

جاوا اسکریپت این امکان را با ایجاد یک شیء پوشاننده موقت برای انواع داده های اولیه فراهم می کند. این فرآیند به صورت خودکار توسط مفسر جاوا اسکریپت در پس زمینه انجام می شود.

به دست آوردن طول یک رشته در جاوا اسکریپت

ویژگی length طول رشته را برمی گرداند که تعداد کاراکترهای موجود در رشته است. این شامل تعداد کاراکترهای خاص نیز می شود، مانند \t یا \n.

توجه: از آنجایی که length یک ویژگی است نه یک تابع، پس نباید از پرانتز مانند ()str.length استفاده بکنیم. در عوض فقط باید str.length را بنویسیم، در غیر این صورت با خطا مواجه خواهیم شد.

پیدا کردن یک رشته در داخل یک رشته دیگر

ما می توانیم از متد ()indexOfبرای یافتن یک زیر رشته یا  یک رشته در یک رشته دیگر استفاده کنیم. این متد شاخص یا موقعیت اولین رخداد یک رشته مشخص شده در یک رشته را برمی گرداند.به عنوان مثال:

همچنین، می‌توانیم از متد()lastIndexOf  برای بدست آوردن شاخص یا موقعیت آخرین رخداد رشته مشخص شده در یک رشته استفاده کنیم، به عوان مثال:

اگر رشته مد نظر پیدا نشود هر دو متد ()indexOf و ()lastIndexOf مقدار  -1 را برمی‌گردانند. هر دو روش همچنین یک پارامتر عدد صحیح اختیاری را می پذیرند که موقعیت شروع برای جستوجو را مشخص می کند.به عنوان مثال:

نکته: کاراکترهای یک رشته از چپ به راست ایندکس می شوند. شاخص اولین کاراکتر 0 است و شاخص آخرین کاراکتر رشته ای به نام myStr مقدار myStr.length – 1 میباشد.

جستجوی یک الگوی درون یک رشته

می توانیم از متد ()search برای جستجوی یک قطعه متن یا الگوی خاص در داخل یک رشته استفاده بکنیم.مانند متد  ()indexOf ، متد  ()search  نیز اولین تطابق را برمی‌گرداند، و اگر مطابقت پیدا نشد،برای ما ” 1-  ” را برمی‌گرداند، اما برخلاف متد ()indexOf ،این متد همچنین می‌تواند یک عبارت منظم را به عنوان آرگومان خود برای ارائه جستجوی پیشرفته انتخاب کند. به عنوان مثال:

توجه: متد()search از جستجوهای سراسری پشتیبانی نمی کند. فلگ g  (مانند pattern/g/) آرگومان عبارت منظم خود را نادیده می گیرد.

در جلسه های  آینده بیشتر در مورد عبارات منظم خواهید آموخت.

استخراج یک زیر رشته از یک رشته 

برای اینکار می توانیم از متد  ()slice  برای استخراج بخشی یا زیر رشته از یک رشته استفاده کنیم.
این متد2 پارامتر دارد: اینکس شروع (ایندکسی که در آن استخراج شروع می شود)، و یک ایندکس پایانی که اختیاری هم هست  (ایندکسی که قبل از آن استخراج پایان می یابد)، مانند  str.slice(startIndex, endIndex).

برای نمونه ، مثال زیر یک رشته را از موقعیت 4 به موقعیت 15 برش می دهد(استخراج میکند):

همچنین می توانیم مقادیر منفی را مشخص کنیم. مقدار منفی به عنوان strLength + startIndexدر نظر گرفته می شود، که در آن strLength طول رشته است  برای مثال، اگر startIndex منفی 5 باشد به عنوان  strLength - 5 در نظر گرفته می شود. اگر startIndex بزرگتر یا مساوی با طول رشته، متد  ()slice یک رشته خالی برمی گرداند.. همچنین، اگر endIndex اختیاری مشخص نشود، متد  ()slice تا انتهای رشته استخراج می‌شود.به عنوان مثال:
همچنین می توانیم از متد ()substringبرای استخراج بخشی از رشته داده شده بر اساس ایندکس های شروع و پایان، مانند  str.substring(startIndex, endIndex) استفاده کنیم. متد  ()substring بسیار شبیه به متد  ()slice است، به جز چند تفاوت:

رشته ها در جاوا اسکریپت

مثال زیر به شما نشان می دهد که این روش چگونه عمل می کند:

استخراج تعداد ثابت کاراکتر از یک رشته

جاوا اسکریپت همچنین متد ()substr را ارائه می‌کند که شبیه به  ()slice اما با تفاوتی جزئی است، پارامتر دوم تعداد کاراکترهایی را که باید استخراج شوند به جای ایندکس پایانی مشخص می‌کند، مانند str.substr(startIndex, length). اگر length  صفر یا یک عدد منفی باشد، یک رشته خالی برگردانده می شود. مثال زیر نحوه عملکرد آن را نشان می دهد:

جایگزینی محتویات یک رشته

می توانیم از متد  ()replace برای جایگزینی بخشی از یک رشته با رشته دیگری استفاده کنیم. این روش دو پارامتر دارد اولی  یک عبارت منظم برای مطابقت یا یک زیر رشته و دومی یک رشته جایگزین  میباشد. مانند str.replace(regexp|substr, newSubstr).

 متد ()replace یک رشته جدید را برمی گرداند، و روی رشته اصلیتغییری ایجاد نمیکند. مثال زیر نحوه عملکرد آن را به ما نشان می دهد:

به طور پیش‌فرض، متد  ()replace  فقط اولین تطابق را جایگزین می‌کند به حروف کوچک و بزرگ حساس است. برای جایگزینی زیر رشته در یک رشته به روشی که به حروف بزرگ و کوچک حساس نیست، می توانیم از یک عبارت منظم (regexp) با یک اصلاح کننده i  استفاده کنیم.به عنوان مثال:

تبدیل رشته به حروف بزرگ یا کوچک

در جاوا اسکریپت می توانیم از متد ()toUpperCase برای تبدیل رشته به حروف بزرگ استفاده کنیم، به عنوان مثال:

همچنین، می‌توانیم از  ()toLowerCase برای تبدیل یک رشته به حروف کوچک استفاده کنیم، به عنوان مثال:

الحاق دو یا چند رشته در جاوا اسکریپت

در جاوا اسکریپت با استفاده از عملگرهای تخصیص + و +=میتوانیم دو یا چند رشته را به هم متصل یا ترکیب کنیم.به عنوان مثال:

جاوا اسکریپت همچنین متد()concat  را برای ترکیب رشته ها ارائه می دهد، اما زیاد توصیه نمیشه.

دسترسی به کاراکترهای خاص یک رشته

می‌توانیم از متد ()charAt  برای دسترسی به کاراکترهای خاص از یک رشته، استفاده میکنیم.مانندstr.charAt(index) . ایندکس مشخص شده باید یک عدد صحیح بین 0 و str.length - 1. باشد. اگر ایندکسی ارائه نشده باشد، اولین کاراکتر در رشته برگردانده می شود، زیرا پیش فرض 0 است.به عنوان مثال:

راه بهتری هم برای این کار وجود دارد. از آنجایی که ECMAScript 5، رشته‌ها را می‌توان مانند آرایه‌های فقط خواندنی در نظر گرفت، و می‌توانیم به جای روش ()charAt  به کاراکترهای منحصربه فرد از یک رشته با استفاده از براکت‌ها([]) دسترسی پیدا کنیم، به عنوان مثال:

توجه:تنها تفاوت بین دسترسی به کاراکتر از یک رشته با استفاده از ()charAtو براکت ([]) این است که اگر هیچ کاراکتری پیدا نشد، براکت تعریف نشده برمی‌گرداند، در حالی که متدcharAt یک رشته خالی را برمی‌گرداند.

تبدیل یک رشته به یک ارایه و استفاده از اندیس آن

متد ()split می تواند برای تقسیم یک رشته به آرایه ای از رشته ها با استفاده از نحوstr.split(separator, limit)استفاده شود. آرگومان جداکننده رشته ای را مشخص می کند که هر تقسیم باید در آن اتفاق بیفتد، در حالی که آرگومان های حد حداکثر طول آرایه را مشخص می کند.اگر آرگومان جداکننده حذف شود یا در رشته مشخص شده یافت نشود، کل رشته به اولین عنصر آرایه اختصاص داده می شود. به عنوان مثال:

برای تقسیم یک رشته به آرایه ای از کاراکترها، یک رشته خالی("")  را به عنوان جداکننده مشخص میکنیم.به عنوان مثال:

این جلسه نیز به پایان رسید  موفق باشید .

سایر مقالات

اشیاء(Objects) در جاوا اسکریپت

 

 

برای امتیاز به این نوشته کلیک کنید!
[کل: 1 میانگین: 5]
اشتراک‌گذاری

علی فرجی هستم، برنامه نویس جاوا اسکریپت و ریکت با بیش از 5 سال تجربه. من عاشق برنامه نویسیم و همیشه به دنبال یادگیری چیزهای جدید هستم.همچنین یکی از بنیانگذار های سایت کدایت ، یک سایت آموزش برنامه نویسی در حوزه جاوا اسکریپت، ریکت، اندروید و ... هستم. امیدوارم بتوانم با دانش و تجربه خود به سایر برنامه نویسان کمک کنم تا در این زمینه پیشرفت کنند.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *