تخفیف ویژه

آموزش ویژگی های ECMAScript 6 (جلسه 9) : متدهای اضافه شده به رشته ها

دسته بندی: آموزش
زمان مطالعه: 4 دقیقه
۳۱ تیر ۱۳۹۶

همونطور که اطلاع دارید در جلسه قبل در مورد مقدار پیش فرض برای پارامترهای توابع توضیحاتی رو قرار دادیم. در این جلسه قصد داریم در مورد متدهای اضافه شده به رشته‌ها یا String در ES6 توضیحاتی رو قرار بدیم.

همونطور که خودتون هم میدونین قبل از اومدن ES6 متدهای مختلفی برای رشته‌ها وجود داشت. مثلا با استفاده از متد trim میتونیم فضاهای خالی اول و آخر رشته رو حذف کنیم و مثلا با استفاده از متد indexOf میتونیم وجود یک رشته در رشته ای دیگر رو بررسی کنیم. مثلا کد زیر رو در نظر بگیرید:

let sampleName = 'Mohammad Esfandiari';

if(sampleName.indexOf('Mohammad') != -1) {
	console.log('Mohammad exist in text');
}

میبینید که یک رشته قرار دادیم و بعد از اون چک کردیم که Mohammad درون رشته فوق وجود دارد یا خیر. اگر خروجی indexOf مخالف با 1- باشد به معنای این هست که کلمه مورد نظر درون متن وجود دارد. این متد محدودیتهایی رو داره و نمیتونیم هر کاری رو با استفاده از اون انجام بدیم. متدهای جدیدی در ES6 به رشته‌ها اضافه شده که با استفاده از اونا میتونیم راحتتر رشته‌ها رو بررسی کنیم. اولین متد که در مورد اون توضیح میدیم، متد includes است. این متد یک رشته رو میگیره و اگر رشته مورد نظر درون متن وجود داشته باشد، true و در غیر اینصورت false برگشت داده میشه. پس کد بالا رو میتونیم بصورت زیر بازنویسی کنیم:

let sampleName = 'Mohammad Esfandiari';

if(sampleName.includes('Mohammad')) {
	console.log('Mohammad exist in text');
}

میبینید که دیگه نیازی به عملگرهای منطقی مانند == نیز نیست. این متد اگر تشخیص بدهد که کلمه Mohammad درون رشته مورد نظر وجود دارد، true رو برمیگردونه و دیگه به اول یا آخر بودن اون کاری نداره. حالا فرض کنید میخوایم بررسی کنیم که متن مورد نظر با استفاده از Mohammad شروع میشه یا خیر. یعنی اولین کلمه متن باید Mohammad باشد. برای این کار از متد startsWith استفاده میکنیم. در این متد اگر شرایط وفق کند true و در غیر این صورت false برگشت داده میشه. کد زیر رو در نظر بگیرید:

let sampleName = 'Mohammad Esfandiari';

if(sampleName.startsWith('Mohammad')) {
	console.log('This text starts with Mohammad');
}

چون متن مورد نظر با Mohammad شروع شده، پس کدهای درون شرط اجرا میشه و عبارت موجود در Console چاپ میشه. اما متن زیر رو در نظر بگیرید:

let sampleName = 'It is Mohammad Esfandiari';

if(sampleName.startsWith('Mohammad')) {
	console.log('This text starts with Mohammad');
} else {
	console.log('This text does not start with Mohammad');
}

چون متن مربوط به متغیر sampleName، با Mohammad شروع نشده پس شرط اجرا نمیشه و کدهای درون else اجرا میشه و متن مورد نظر در console چاپ میشه.

یک متد دیگه برعکس متد startsWith وجود داره و اون هم endsWith است و میتونین با استفاده از اون بررسی کنید که متن مورد نظر به کلمه ای خاص ختم میشه یا خیر. متد endsWith نیز مانند متدهای قبل true یا false رو برگشت میده و میتونین با استفاده از اون کارهای مورد نظر رو انجام بدین. کد زیر رو در نظر بگیرید:

let sampleName = 'Mohammad Esfandiari';

if(sampleName.endsWith('Esfandiari')) {
	console.log('This text ends with Esfandiari');
}

در کد بالا چون متن مورد نظر به Esfandiari ختم شده پس شرط مورد نظر صدق میکنه و متن مورد نظر در Console چاپ میشه. هر سه متد بالا یک ورودی و آرگومان دیگه رو نیز دریافت میکنن که با استفاده از اون میتونین موقعیت شروع بررسی رو مشخص کنید و تغییر بدین. مثلا کد زیر رو یکبار دیگه در نظر بگیرید:

let sampleName = 'It is Mohammad Esfandiari';

if(sampleName.startsWith('Mohammad')) {
	console.log('This text starts with Mohammad');
}

چون در کد بالا متن با Mohammad شروع نشده پس شرط اجرا نمیشه. اما اگر ورودی دوم متد startsWith رو 6 قرار بدیم، این متد از اندیس 6 مربوط به متن بررسی رو انجام میده و چون کلمه Mohammad در اندیس 6 قرار دارد، پس شرط مورد نظر اجرا میشه، بصورت زیر:

let sampleName = 'It is Mohammad Esfandiari';

if(sampleName.startsWith('Mohammad', 6)) {
	console.log('This text starts with Mohammad');
}

بهمین راحتی.

یک متد جالب دیگه که به رشته‌ها اضافه شده، متد repeat هست که با استفاده از اون میتونین رشته مورد نظرتون رو به تعداد دلخواه تکرار کنید. مثلا کد زیر رو در نظر بگیرید:

let sample = 'Foo';

console.log(sample.repeat(5));

میبینید که رشته Foo رو 5 بار تکرار کردیم و در Console چاپ کردیم. با این کار مقدار FooFooFooFooFoo چاپ خواهد شد. از این متد میتونین در جاهای زیادی استفاده کنید و بهره ببرید. مثلا کد زیر رو در نظر بگیرید:

console.log(
	'='.repeat(5) + ' Mohammad Esfandiari ' + '='.repeat(5)
);

میبینید که در ابتدا و انتهای متن مورد نظر، 5 علامت مساوی رو تکرار کرده و قرار دادیم. خروجی بصورت زیر خواهد شد:

به همین راحتی.

موفق و پیروز باشید.

یا علی

چه امتیازی به این مقاله می دید؟
نویسنده محمد اسفندیاری
بسیار به طراحی وب علاقمندم و به سرعت در حال یادگیری تمام مباحث پیشرفته هستم و دوست دارم که به دیگران هم یاد بدهم.

جلسات دوره

نظرات کاربران

اولین دیدگاه این پست رو تو بنویس !

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.