آموزش متدهای رشته در جاوا اسکریپت به زبان ساده با مثال و کد
«رشته» (استرینگ | String) از یک سری کاراکتر تشکیل شده است که برای نمایش متن در برنامه نویسی استفاده میشود. رشتهها میتوانند شامل حروف، اعداد و کاراکترهای خاص باشند که آنها را به نوعی داده همهکاره تبدیل میکند. درک چگونگی دستکاری کارآمد رشتهها برای کارهای برنامه نویسی بسیار اهمیت دارد که این کار با استفاده از متدهای رشته قابل انجام است. در این مطلب از «مجله فرادرس» این بار قصد داریم که نحوه دستکاری رشتهها را با متدهای رشته در جاوا اسکریپت مورد بررسی قرار دهیم.
این مطلب با هدف آشنایی کاربران با اصول کار با رشتهها در JavaScript نگارش شده است و در آن مفاهیم اساسی مانند متدهای متداول برای اصلاح و دستکاری مقادیر رشته به صورت کامل پوشش داده شده است. این مطلب شامل هر دو متد رشته داخلی و تکنیکهای اضافی برای انجام کارهای مختلف در رشتهها خواهد بود. در پایان مطالعه این مطلب، خوانندگان درک نسبتاً مطلوبی از اصول رشتهها در جاوا اسکریپت و متدهای کلیدی مورد استفاده برای دستکاری آنها خواهند داشت.
مفهوم رشته ها در جاوا اسکریپت
رشته در جاوا اسکریپت نوعی داده است که دنبالهای از کاراکترها را نشان میدهد. این کاراکترها میتوانند شامل حروف، اعداد، نمادها، کلمات یا حتی جملات کامل باشند. به عبارت سادهتر، رشتهها همان چیزی هستند که برای مدیریت و کار با متن در دنیای کدنویسی استفاده میشوند و میتوانند هر کاراکتری از مجموعه «یونیکد» (Unicode) را در خود جای دهند. در اصل رشته در جاوا اسکریپت و در سایر زبانهای برنامه نویسی به عنوان راهی برای بیان اطلاعات به صورت متن است. این نوع داده با انواع دادههای عددی مانند intکه فقط میتواند مقادیر عددی را نگه دارد، متفاوت است. از سوی دیگر، رشتهها همهکاره هستند و میتوانند طیف وسیعی از کاراکترها را شامل شوند.
رشتهها به دلیل انعطافپذیری خود، نقش مهمی در توسعه نرمافزار در صنایع مختلف و زبانهای برنامهنویسی دارند. در جاوا اسکریپت بیش از ۳۰ متد متمایز برای تعامل با مقادیر رشته وجود دارد. این متدهای رشته در جاوا اسکریپت ابزارهای قدرتمندی هستند که برنامه نویسان از آنها برای دستکاری مؤثر متن در کد خود استفاده میکنند.
نحوه ایجاد رشته در جاوا اسکریپت
ایجاد رشته در جاوا اسکریپت بسیار ساده است و کاربر میتواند این کار را با قرار دادن متن در داخل کوتیشنهای تکی (' ')، گیومههایدوتایی (" ") و همچنین بک تیک (` `) انجام داد. در مثال زیر نحوه انجام این کار آمده است:
1// A string created using single quotes
2let string1 = 'I am a very cool string! 😎';
3
4// A string created using double quotes
5let string2 = "I am a very cool string! 😎";
6
7// A string created using backticks, also known as template literal
8let string3 = `I am a very cool string! 😎`;
این رشتهها، خواه با بکتیک یا کوتیشن ساخته شوند، اساساً یکسان هستند. با مقایسه رشتهها میتوان به این واقعیت پی برد.
1string1 === string2; // true
2
3string1 === string3; // true
4
5string2 === string3; // true
بکتیکها قالب خاصی برای تولید رشته هستند. رشتههایی که با بکتیک ایجاد میشوند، مانند اعداد و بولیها، مقادیر اولیه در نظر گرفته میشوند. مقادیر اولیه تغییرناپذیر بوده و فاقد متد یا ویژگی هستند.
راه دیگری برای ایجاد رشتهها با استفاده از سازنده Stringوجود دارد. هنگامیکه این سازنده با کلمه کلیدی newاستفاده میشود و رشتهای را به عنوان شی تولید میکند. بدون کلمه کلیدی newمقدار ارائه شده به نوعی رشته اولیه تبدیل خواهد شد که مثال زیر بیانگر این واقعیت است:
1let str1 = new String('What am I?');
2typeof str1; // 'object'
3
4let str2 = String('What am I?');
5typeof str2; // 'string'
6
7let str3 = "What am I?";
8typeof str3; // 'string'
9
10str1 === str2; // false
11str1 === str3; // false
12str2 === str3; // true
عملگر typeofبه کاربر کمک میکند تا نوع داده را تعیین کند در حالی که str1و str2ممکن است مشابه به نظر برسند، مقایسه آنها falseبازمیگرداند زیرا اساساً مقادیر متفاوتی دارند.
متدهای رشته در جاوا اسکریپت
درک نحوه استفاده حداکثری از رشتهها در جاوا اسکریپت ضروری است. یکی از کارهای رایجی که اغلب کاربران در حال انجام آن هستند این است که رشته را مطابق با نیازهای خود تغییر دهند. برای سادهسازی این فرآیند، جاوا اسکریپت نوعی شی رشته ارائه میکند که به کاربر امکان میدهد متدها و ویژگیها را برای دستکاری مقادیر رشته اعمال کند.
رشتهها همچنین با جلوگیری از تزریق کدهای مخرب، نقش مهمی در ایمنسازی برنامهها یا نرمافزارها ایفا میکنند. این فرآیند محافظتی شامل استفاده از عبارات منظم است که معمولاً به عنوان Regex شناخته میشوند. به بیان ساده، عبارات منظم الگوهایی هستند که روی رشتهها اعمال میشوند تا اطمینان حاصل شود که الزامات قالببندی خاص را برآورده میکنند. در ادامه این مطلب از مجله فرادرس مهمترین متدهای رشته در جاوا اسکریپت مورد بررسی و بازبینی قرار خواهند گرفت.
متدهای داخلی رشته در جاوا اسکریپت
برخلاف برخی از زبانهای برنامهنویسی که رشتهها به عنوان اشیایی با ویژگیها و متدهای داخلی مختلف در نظر گرفته میشوند، جاوا اسکریپت رشتهها را به عنوان انواع دادههای اولیه میبیند. این بدان معناست که به طور پیشفرض، رشتهها با مجموعهای از متدها یا ویژگیهای از پیش تعریفشده همراه نیستند. با این حال جاوا اسکریپت هنوز برای کار با رشتهها از متدها و چند تا ویژگی پشتیبانی میکند. اگرچه رشتهها اشیا نیستند اما وقتی اعمالی روی آنها انجام بگیرد، مانند اشیایی با عملکرد پیشرفته عمل میکنند.
این قابلیت پیشرفته به وسیله عنصری به نام شی رشته در کتابخانهها و فریمورکهای جاوا اسکریپت گنجانده است. نکتهای که باید در این رابطه به آن توجه کرد این است که استفاده از این شی برای ایجاد اشیای رشتهای میتواند منجر به پردازش کندتر و نتایج بالقوه غیرمنتظره شود. بنابراین، استفاده از آنها با احتیاط توصیه میشود.
نحوه استفاده از متدهای رشته در جاوا اسکریپت
کار با متدهای رشته ای در جاوا اسکریپت آنقدرها که در ابتدا به نظر میرسد پیچیده نیست. بیایید آن را با مثالی ساده بررسی کنیم تا همهچیز روشن شود. استفاده از متدهای رشته شامل درک سینتکس آن است که در زیر این سینتکس با ارائه مثالی توضیح داده شده است. قطعه کد زیر را در نظر بگیرید:
1let str = "Doctor Who";
2str.someRandomMethod();
ساختار فوق، پیکره اساسی هر متد رشتهای در جاوا اسکریپت است. این ساختار با متغیری شروع میشود که دارای نوعی مقدار رشته اولیه است. برای اعمال متد روی متغیر رشته، از علامت نقطه استفاده خواهد شد، متد مورد نظر اضافه شده و با پرانتز و نقطهویرگول نتیجه آن قابل بازیابی است. حال، نمونهن استفاده از متد trimرا در زیر خواهیم دید:
1let str = "Yes, but Doctor Who?";
2str.trim();
3/*Would return the string "Yes,butDoctorWho?"*/
استفاده از متدهای رشته در جاوا اسکریپت ساده است اما اگر متدی به یک یا چند پارامتر نیاز داشته باشد باید چطوری از آن استفاده کنیم؟ در چنین مواردی، متد معیارهای خاصی را میپذیرد که این معیارها یا پارامترها مشخص میکنند با رشته چگونه رفتار شود و این واقعیت کمی به پیچیدگی ماجرا منجر میشود. بیایید مثال را با متدی که دارای پارامتر است بررسی کنیم. کد زیر همان نتیجه قبلی را به دست میآورد و هر فضای خالی را حذف میکند اما این بار با استفاده از متد replaceکه قطعه کد آن به صورت زیر است:
1let str = "I'm a Timelord from the planet Gallifrey.";
2str.replace(/\s/g, '');
3/*Would return the string "I'maTimelordfromtheplanetGallifrey."*/
در مثال بالا، متد replaceدو پارامتر دارد: اولی چیزی است که متد باید به دنبال آن باشد و دومی مقداری است که باید با رشته هدف جایگزین شود. اکنون که اصول متدهای رشتهای و نحوه استفاده از آنها را توضیح دادیم، بیایید فهرست جامعی از ویژگیها و متدهای رشته در جاوا اسکریپت را بررسی کنیم.
فهرست بندی رشته در جاوا اسکریپت
در جاوا اسکریپت، میتوان با استفاده از اندیسهای عددی که از صفر شروع شده و با استفاده از علامت []مشخص میشوند، به کاراکترهای جداگانه در رشته دسترسی ایجاد کرد. بیایید با مثالی این مفهوم را تشریح کنیم:
1let str = 'larch';
2str[0]; // 'l'
3str[1]; // 'a'
4str[2]; // 'r'
5str[3]; // 'c'
6str[4]; // 'h'
همچنین، میتوانید از متد charAtبرای بازیابی کاراکتر خاص در رشته به صورت زیر استفاده کرد:
1str.charAt(0); // 'l'
توجه به این نکته ضروری است که بر خلاف برخی از ساختارهای داده غیر ابتدایی، مانند آرایهها در جاوا اسکریپت، نمیتوان کاراکترهای خاصی را در رشته به طور مستقیم تغییر داد که مثال زیر بیانگی این واقعیت است:
1let arr = ['birch', 'larch', 'oak'];
2typeof arr; // 'object'
3arr[2] = 'scots pine';
4console.log(arr); // ['birch', 'larch', 'scots pine']
با این حال تلاش برای تغییر مستقیم رشته به دلیل ماهیت اولیه آن کار نخواهد کرد که مثال زیر برای بیان این هدف است:
1let str = 'larch';
2typeof str; // 'string'
3str[0] = 'm'; // This might throw an error in strict mode
4console.log(str); // 'larch'
در مثال فوق مقدار متغیر str همان Larchباقی میماند و نمیتوان مستقیماً آن را تغییر داد. در عوض، میتوان مقدار جدیدی به متغیر اختصاص داد. طبق مثال زیر:
1let str = 'larch';
2str = 'march'; // Reassigning str with a different value
3console.log(str); // 'march'
این تمایز در مدیریت مقادیر اولیه در جاوا اسکریپت به وضوح قابل مشاهده است.
ویژگی طول رشته در جاوا اسکریپت
در جاوا اسکریپت میتوان تعداد کاراکترهای رشتهای را با استفاده از ویژگی lengthتعیین کرد. مثال زیر نحوه استفاده از این ویژگی را بیان میکند:
1let sentence = 'Always look on the bright side of life';
2sentence.length; // 38
ویژگی lengthتعداد کاراکترها را در رشته شامل فاصلهها ارائه میدهد. در مثال فوق جمله از ۳۸ کاراکتر تشکیل شده است. مهم است که توجه داشته باشیم که با توجه به اینکه اندیسبندی در جاوا اسکریپت از صفر شروع می شود، بنابراین آخرین کاراکتر در جمله فوق دارای اندیس یا شاخص ۳۷ خواهد بود (مقداری که با کم کردن ۱ واحد از طول به دست میآید).
الحاق رشته ها در جاوا اسکریپت
در جاوا اسکریپت میتوان دو یا چند رشته را با استفاده از عملگر الحاق که علامت مثبت (+) است، به همدیگر الحاق کرد که مثال زیر برای بیان این هدف است:
1let a = 'When candles are out,';
2let b = 'all cats are grey.';
3let c = a + ' ' + b;
4console.log(c); // 'When candles are out, all cats are grey.'
در مثال فوق، نوعی رشته اضافی بین «a» و «b» قرار داده شده است تا اطمینان حاصل شود که جمله نهایی فاصله درستی دارد. همچنین میتوان با استفاده از عملگر تخصیص جمع (+=) به نتیجه مشابهی رسید:
1let a = 'When candles are out,';
2let b = 'all cats are grey.';
3console.log(a += ' '); // 'When candles are out, '
4console.log(a += b); // 'When candles are out, all cats are grey.'
با +=، به متغیر aمقدار فعلی آن به اضافه مقدار سمت راست عملگر اختصاص داده میشود. اکنون aکل جمله را نگه میدارد. در مثال قبلی، جمله کامل در متغیر دیگری به نام cذخیره شد. همچنین اگر سعی شود نوعی داده عددی را به رشته متصل کرد، جاوا اسکریپت به طور خودکار آن عدد را به نوعی مقدار رشتهای تبدیل میکند که مثال زیر این موضوع را بیان کرده است:
1console.log('The ' + 3 + ' Musketeers'); // 'The 3 Musketeers'
در مثال فوق، عدد ۳ به صورت اجباری به نوعی رشته تبدیل می شود و در نتیجه جمله The 3 Musketeersتولید خواهد شد.
ویژگی مقایسه رشته ها در جاوا اسکریپت
در زبان برنامهنویسی جاوا اسکریپت میتوان رشتهها را بر اساس ترتیب و طول الفبای آنها با استفاده از عملگرهای مقایسهای، مورد مقایسه قرار داد که نتیجه آن نوعی داده بولی خواهد بود. در اینجا نمونهای از مقایسه رشتهها بر اساس حروف الفبا آورده شده است:
1'Berry' < 'Copper'; // true
2// because 'B' comes before 'C'
3
4'Berry' < 'Bingo'; // true
5// because the first characters are the same, and 'e' comes before 'i'
6
7'berry' < 'Copper'; // false
8// because the comparison is case-sensitive, and capital letters come first
در مثال فوق مقایسه حرفبهحرف از اولین کاراکتر شروع می شود و از ترتیب یونیکد پیروی میکند. برای مثال، Cقبل از bقرار میگیرد، زیرا حروف بزرگ قبل از حروف کوچک در جدول یونیکد قرار دارند. به طور مشابه، '$' < '&'به TRUE ارزیابی میشود زیرا $قبل از &در جدول یونیکد قرار میگیرد.
اگر هر کاراکتر در رشته با همتای خود در رشته دیگر مطابقت داشته باشد و رشتهها دارای طول یکسان باشند، آنها برابر تلقی میشوند. در غیر این صورت، رشته بلندتر بزرگتر در نظر گرفته میشود. مثال زیر برای بیان این هدف اهمیت زیادی دارد:
1let quote = 'All generalizations are dangerous, even this one';
2let quoteMark = 'All generalizations are dangerous, even this one!';
3quote < quoteMark; // true
اگر نیاز به مقایسه طول دو رشته وجود داشته باشد، میتوان از ویژگی lengthبه صورت زیر برای این هدف استفاده کرد:
1quote.length < quoteMark.length; // true
الفبای الگو در جاوا اسکریپت
«الگوهای واقعی یا الفبای الگو» (Template literals) که با استفاده از بکتیک (`) ایجاد میشوند، دارای ویژگیهای خاصی هستند که کار با رشتهها را راحتتر میکنند. یکی از ویژگیهای قابلتوجه، توانایی نمایش متن در چندین خط است. برای درک بهتر این فرایند مثال را در نظر بگیرید:
1const chorus = `Don't lose heart, comrades
2It's over that hill
3Paradise is just over that hill`;
4
5console.log(chorus);
در مثال فوق متن نمایش داده شده، فاصله استفاده شده هنگام نوشتن رشته را منعکس میکند و حفظ قالب چندخطی را آسان خواهد کرد. در مقابل، رشتههای سنتی نیاز به استفاده از کاراکتر خط جدید (\n) برای دستیابی به نتیجه مشابه دارند:
1const verse = "There is unrest in the forest\nTrouble with the trees";
2
3console.log(verse);
هنگام ترکیب متغیرها در رشتههایی که با کوتیشن تکی یا دوتایی ایجاد میشوند، معمولاً از الحاق استفاده میشود، همانطور که قبلا نشان داده شد:
1const dog1 = 'Bach';
2const dog2 = 'Bingo';
3
4console.log('My two dogs are called ' + dog1 + ' and ' + dog2 + '.');
با این حال، الفبای الگو، راهحل ظریفتری به نام درونیابی رشتهای را معرفی میکنند که توجه به مثال زیر برای بیان این هدف است:
1const dog1 = 'Bach';
2const dog2 = 'Bingo';
3
4console.log(`My two dogs are called ${dog1} and ${dog2}.`);
قابلیت درونیابی رشتهای به کاربران اجازه میدهد تا متغیرها یا عبارات را با استفاده از ${}در الگوهای الفبایی درج کنند. با این کار خوانایی کد را با قرار دادن مستقیم محتوا در متن افزایش میابد. متغیرها یا هر عبارتی را میتوان در این مکان نگهدارندهها استفاده کرد که به صورت خودکار به رشته تبدیل میشوند. این ویژگی کد را انعطافپذیرتر و درک آن را آسان میکند.
آموزش متدهای رشته در جاوا اسکریپت
قبلاً اشاره کردیم که انواع دادههای اولیه مانند رشتهها متد یا ویژگی ندارند. با این حال، هنگامیکه از متدی استفاده شد یا به نوعی ویژگی روی رشته دسترسی ایجاد شود، جاوا اسکریپت نوعی «شی پوشاننده موقت» (Wrapper Object) در پشتصحنه ایجاد میکند. این شی Wrapper به متدها و خصوصیات اجازه میدهد تا روی رشته کار کند. هنگامیکه عملیات انجام شد، شی Wrapper دور انداخته میشود. به عبارت سادهتر، حتی اگر انواع دادههای اولیه ذاتاً متدهایی ندارند، جاوا اسکریپت ما را قادر میسازد تا از آنها در این فرآیند پشتصحنه استفاده کنیم. تا به اینجای مطلب ویژگیهای رشته در جاوا اسکریپت مورد بررسی واقع شدند. در بخشهای زیر متدهای رشته در جاوا اسکریپت مورد بررسی واقع خواهند شد.
متد concat در جاوا اسکریپت
متد Concat در جاوا اسکریپت به نتیجهای مشابه با استفاده از عملگرهای +و +=میرسد. این متد رشته در جاوا اسکریپت یک یا چند رشته را که به عنوان آرگومان ارائه شدهاند، با رشتهای که متد بر روی آن اعمال میشود ترکیب میکند. نتیجه رشتهای جدید خواهد بود که نشاندهنده الحاق این رشتهها است. بیایید مثالی از بخش الحاق رشتهها را دوباره بررسی کنیم:
1let a = 'When candles are out,';
2let b = 'all cats are grey.';
3let c = a.concat(' ', b);
4console.log(c); // 'When candles are out, all cats are grey.'
در مثال فوق، از متد concatبرای الحاق رشتههای موجود در متغیرهای aو bاستفاده میشود. همچنین توجه به مثال زیر برای درک بهتر متد concatخالی از لطف نیست:
1str.concat(" I'm The Doctor, look me up!");
2/*Would return "I'm a Timelord from the planet Gallifrey. I'm The Doctor, look me up!"*/
در مثال بالا، متدconcatرشته اصلی strرا با متن ارائه شده ترکیب میکند و در نتیجه نوعی رشته جدید ایجاد میشود. این متد از میان متدهای رشته در جاوا اسکریپت برای اتصال رشتهها به روشی مستقیم مفید است.
متدهای toLowerCase و toUpperCase در جاوا اسکریپت
در شرایط خاص، ممکن است لازم باشد حروف رشتهها را برای مقایسه مناسب، ذخیرهسازی ثابت یا اهداف دیگر به صورت سفارشی تنظیم کرد. متدهای toLowerCaseو toUpperCaseبرای این منظور مفید هستند و به کاربر امکان میدهند بدون تغییر رشته اصلی رشته را به حروف کوچک یا بزرگ تبدیل کند. در اینجا مثالی با استفاده از متد toLowerCaseآورده شده است:
1let sentence = 'Always look on the bright side of life';
2
3console.log(sentence.toLowerCase());
4// always look on the bright side of life
همچنین مثال زیر برای درک متد toUpperCaseمهم است:
1console.log(sentence.toUpperCase());
2// ALWAYS LOOK ON THE BRIGHT SIDE OF LIFE
در مثالهای فوق، متدهای نامبرده حروف رشته sentence را بدون تغییر محتوای اصلی آن تبدیل میکنند. متد toLowerCaseهمه حروف را به حروف کوچک تبدیل میکند، در حالی که toUpperCaseآنها را به حروف بزرگ تبدیل خواهد کرد. این متدها زمانی مفید هستند که کاربر نیاز دارد حروف بزرگ را برای اهداف مختلف در کد خود استفاده کند.
متد Includes در جاوا اسکریپت چیست؟
متد Includes از میان متدهای رشته در جاوا اسکریپت بررسی میکند که آیا رشتهای مشخص که به عنوان آرگومان ارائه شده است، در رشته دیگری وجود دارد یا خیر. این متد در اصل نوعی جستجوی حساس به حروف کوچک و بزرگ انجام میدهد و نوعی مقدار بولی را بازمیگرداند. همچنین میتوان آرگومان دوم را نیز برای آن مشخص کرد که اندیسی را که جستجو باید از آن در رشته اصلی شروع شود را نشان میدهد. مثال زیر برای درک این متد مهم است:
1let sentence = 'Always look on the bright side of life';
2sentence.includes('look up'); // false
3sentence.includes('look on'); // true
4sentence.includes('look on', 8); // false
در مثال بالا، متد includesبرای بررسی وجود عبارات خاص در رشته sentenceاستفاده میشود. خط اول Falseرا بازمیگرداند زیرا look upدر جمله یافت نمیشود. همچنین خط دوم این مثال، Trueرا از آنجایی که «look on» در رشته هدف وجود دارد بازیابی میکند و در آخرسر، خط سوم که جستجو را از اندیس ۸ شروع میکند، «True» را بازمیگرداند. همچنین توجه به مثال زیر هم برای درک بهتر این متد خالی از لطف نیست:
1str.includes("Timelord");
2/*Would return boolean true*/
در مثال بالا، متد includesبررسی میکند که آیا رشته دارای مقدار مشخص شده Timelordاست یا خیر، در صورت وجود مقدار Trueبازمیگرداند. این متد برای جستجوی زیررشتهها در رشته بزرگتر مفید است.
متد indexOf در جاوا اسکریپت چیست؟
متد IndexOf در جاوا اسکریپت به دنبال زیررشته خاص میگردد و اندیس اولین وقوع آن را در رشته اصلی ارائه میکند. ممکن است در استفاده از آن پارامتری اختیاری برای تعیین شاخص شروع جستجو لازم باشد. مثال زیر نحوه استفاده از این متد رشته را بیان میکند:
1let sentence = 'Always look on the bright side of life';
2
3sentence.indexOf('l'); // 1
4sentence.indexOf('l', 2); // 7
5sentence.indexOf('l', 8); // 34
6sentence.indexOf('L'); // -1
در مثال فوق، متد indexOfبرای یافتن موقعیت حرف «l» در رشته «جمله» sentenceاستفاده میشود. خط اول «1» را بهعنوان «l» بازمیگرداند که ابتدا در اندیس ۱ یافت میشود. خط دوم جستجو را از اندیس ۲ شروع میکند و ۷ را بازمیگرداند و در نهایت خط سوم از اندیس ۸ شروع شده و ۳۴ را به عنوان نتیجه ارائه میکند. اگر زیر رشته پیدا نشود، مانند خط آخر، «۱-» را بازمیگرداند. باید به این نکته توجه داشت که جستجو به حروف کوچک و بزرگ حساس است.
متدهای startsWith و endsWith در جاوا اسکریپت
متد StartsWith در جاوا اسکریپت ارزیابی میکند که آیا رشتهای خاص با دنباله خاصی از کاراکترها شروع میشود و در نتیجه نوعی مقدار بولی ارائه میکند. این عملیات به حروف کوچک و بزرگ حساس است. مثال زیر نحوه استفاده از این متد از میان متدهای رشته در جاوا اسکریپت را نشان میدهد:
1let dish = 'Lemon curry';
2dish.startsWith('Lem'); // true
3dish.startsWith('lem'); // false
4dish.toLowerCase().startsWith('lem'); // true
5dish.startsWith('cu'); // false
6dish.startsWith('cu', 6); // true
در مثال فوق، startsWithبرای تأیید اینکه آیا رشته dishبا دنبالههای خاصی شروع میشود استفاده خواهد شد. خط اول trueرا برمیگرداند زیرا Lemonبا Lemشروع میشود، در حالی که خط دوم به دلیل حساسیت به حروف بزرگ، falseرا بازمیگرداند. خط سوم، پس از تبدیل رشته به حروف کوچک، trueرا بازیابی میکند. خطوط چهارم و پنجم ارزیابی میکنند که آیا cuرشته را شروع میکند یا از یک اندیس خاص (۶) شروع میشود و مقادیر بولی را بر این اساس ارائه میکند.
به طور مشابه، متد endsWithبررسی میکند که آیا رشتهای خاص با دنباله تعیینشده از کاراکترها خاتمه مییابد و نوعی مقدار بولی را نیز بازمیگرداند که مثال زیر برای بیان این هدف است:
1let dish = 'Lemon curry';
2dish.endsWith('ry'); // true
3dish.endsWith('on', 5); // true
در مثال بالا، خط اول trueرا بازمیگرداند زیرا Lemon curryبا ryبه پایان میرسد. خط دوم، با آرگومان اختیاری که موقعیت پایانی را مشخص میکند، trueرا نیز بازمیگرداند زیرا رشته فرعی onرشته را پایان میدهد. این متدهای رشته در جاوا اسکریپت برای بررسی الگوهای شروع و پایان رشتهها مفید هستند.
متدهای Slice و Substring
متدهای Slice و Substring در جاوا اسکریپت به کاربر این امکان را میدهند که بخشی از رشته را استخراج کرده و نوعی رشته جدید بدون تغییر محتوای اصلی ایجاد کند. برای استفاده از این متدها، اندیس اولین کاراکتر در رشته استخراجشده به عنوان اولین آرگومان قرار داده میشود. آرگومان دوم اندیس کاراکتر اول است که باید حذف شود. مثال زیر برای بیان این هدف است:
1let sentence = 'Always look on the bright side of life';
2
3sentence.slice(7); // 'look on the bright side of life'
4sentence.substring(7); // 'look on the bright side of life'
5sentence.slice(0, 6); // 'Always'
6sentence.substring(0, 6); // 'Always'
در مثالها فوق، هم «slice()» و هم «substring()» برای استخراج بخشهای خاصی از رشته استفاده میشوند. در حالی که این متدها کاملاً مشابه هستند، تفاوتهایی نیز برای آنها وجود دارد. یکی از تمایزها این است که اگر اولین اندیس ارائه شده به «substring()» بزرگتر از اندیس دوم باشد، این دو آرگومان برای اطمینان از اینکه رشته همچنان بازگردانی خواهد شد، مبادله میشوند. در یک سناریوی مشابه، متد «slice()» بهجای آن نوعی رشته خالی بازمیگرداند. مثال زیر برای بیان این هدف است:
1let sentence = 'Always look on the bright side of life';
2
3sentence.substring(11, 7); // 'look'
4sentence.slice(11, 7); // ''
در مثل فوق،substringاندیسها را مجدداً مرتب میکند تا نوعی رشته معتبر تشکیل دهد و در نتیجه lookایجاد شود. از سوی دیگر، sliceنوعی رشته خالی را زمانی بازمیگرداند که اندیس اول بزرگتر از دومی باشد.
متد Split از در جاوا اسکریپت چیست؟
متد Split در جاوا اسکریپت برای تقسیم رشته به قطعات کوچکتر بر اساس کاراکتر جداکننده مشخصی استفاده میشود. در نهایت این متد آرایهای حاوی این زیررشتهها را بازمیگرداند. همچنین میتوان آرگومانی اختیاری به این متد ارائه داد که حداکثر تعداد آیتمهایی را که باید در آرایه گنجانده شود را نشان میدهد. مثال زیر برای بیان این هدف است:
1let sentence = 'Always look on the bright side of life';
2
3sentence.split(' '); // ['Always', 'look', 'on', 'the', 'bright', 'side', 'of', 'life']
4sentence.split(' ', 5); // ['Always', 'look', 'on', 'the', 'bright']
در مثال بالا، متد splitروی رشته sentenceبا کاراکتر فاصله به عنوان جداکننده اعمال میشود. خط اول آرایهای را با هر کلمه به عنوان عنصر بازمیگرداند و خط دوم آرایه را محدود میکند تا حداکثر پنج عنصر را در خود داشته باشد. این متد زمانی مفید است که کاربر نیاز دارد رشته را به تکههای جداگانه تقسیم کند، بهخصوص هنگام کار با جملات یا عبارات این متد از متدهای رشته در جاوا اسکریپت بسیار حائز اهمیت است.
متد Match در جاوا اسکریپت
متد Match در جاوا اسکریپت برای جستجوی نوعی الگوی خاص که به عنوان عبارت منظم در رشته تعریفشده است، استفاده میشود. سپس این متد آرایهای حاوی نتایج تطبیق را بازمیگرداند که مثال زیر برای بیان این هدف است:
1const tongueTwister = "How much wood would a woodchuck chuck if a woodchuck could chuck wood?"
2const regex1 = /(w|c)o*(ul)?d/g;
3const regex2 = /wool/g;
4tongueTwister.match(regex1);
5// ['wood', 'would', 'wood', 'wood', 'could', 'wood']
6tongueTwister.match(regex2);
7// null
در مثال بالا، متد matchبا استفاده از دو عبارت منظم مختلف بر روی رشته tongueTwisterاعمال میشود. مورد اول regex1نمونههایی از کلمات مربوط به woodرا پیدا میکند و مورد دوم regex2تلاش میکند تا وقوع woolرا پیدا کند. نتیجه آرایهای از مقادیر منطبق برای اولین regexو nullبرای دوم است، زیرا woolوجود ندارد. اگر به سادگی نیاز به بررسی وجود نوعی الگو در رشته باشد، برای این منظور متد Testمناسبتر است. همچنین توجه به مثال زیر در رابطه با متد matchخالی از لطف نیست:
1str.match("Timelord");
2/*Would return an array object with the matched value. Regular expressions can also be used.*/
در مثال بالا، متد matchنوعی شی آرایه را با مقدار منطبق یا matchبازمیگرداند. از عبارات منظم نیز میتوان برای تطبیق الگوی پیچیدهتر استفاده کرد.
متد Test برای رشته های جاوا اسکریپت
متد Test در جاوا اسکریپت برای جستجوی نوعی الگوی خاص که به عنوان عبارت منظم در رشته تعریف میشود، مورد استفاده قرار میگیرد. این متد نوعی مقدار بولی بازمیگرداند که نشان میدهد آیا الگو وجود دارد یا نه. سینتکس این متد از متدهای رشته در جاوا اسکریپت، تقریباً معکوس متد matchاست. مثال زیر برای درک بهتر کار این متد اهمیت زیادی دارد.
1const tongueTwister = "How much wood would a woodchuck chuck if a woodchuck could chuck wood?"
2const regex1 = /(w|c)o*(ul)?d/g;
3const regex2 = /wool/g;
4regex1.test(tongueTwister); // true
5regex2.test(tongueTwister); // false
در مثال بالا، متد testبا استفاده از دو عبارت منظم مختلف regex1و regex2بر روی رشته tongueTwisterاعمال میشود. اولین regexبه دنبال تغییرات کلمه woodمیشود و دومی تلاش میکند تا موارد woolرا بیابد. این متد trueرا برای regex1و falseرا برای regex2بازمیگرداند و نشان میدهد که آیا الگوها وجود دارند یا خیر. همچنین توجه به مثال زیر هم برای درک بهتر کار متد test خالی از لطف نیست:
1let text = "Hello Reader";
2let result = /o/.test(text);
3console.log(result);
4/*In this example, the test method returns true because there is an 'o' in our string.*/
در مثال فوق، متد testبررسی میکند که آیا الگوی oدر رشته وجود دارد یا خیر و trueرا از زمانی که الگوی مد نظر پیدا شود، بازمیگرداند.
متد Tostring برای رشته ها در جاوا اسکریپت
متد ToString در جاوا اسکریپت برای تبدیل عدد یا شی رشته به رشته استفاده میشود و در نهایت این متد نمایش رشته مقدار داده شده را بازمیگرداند. مثال زیر برای بیان این هدف است:
1let num = 904;
2let result = num.toString();
3// The toString() method is applied to the number 904.
4
5console.log(result);
6// The result is the string "904".
در مثال بالا، نوعی متغیر به نام numوجود دارد که حاوی عدد ۹۰۴ است. وقتی متد toStringروی numاعمال میشود، مقدار عددی را به نمایش رشته خود تبدیل میکند. نتیجه، اکنون متغیر numنوعی داده رشته است، سپس به کنسول وارد میشود و ۹۰۴ را نمایش میدهد. این متد زمانی مفید است که باید با اعداد در زمینه رشته کار کارکرده یا آنها را با رشتههای دیگر به هم پیوند داد.
متد Trim در جاوا اسکریپت
متد Trim در جاوا اسکریپت برای حذف فضاهای غیرضروری از ابتدا و انتهای رشته استفاده میشود. در اینجا مثالی با توضیح برای درک بهت کار این متد از متدهای رشته در جاوا اسکریپت آورده شده است:
1const str = " Welcome to Faradars";
2const newMessage = str.trim();
3// The trim() method is applied to the string " Welcome to Faradars".
4
5console.log(newMessage);
6// The result is the string "Welcome to Faradars".
در مثال فوق، رشته strوجود دارد که در ابتدا حاوی فاصلههای اضافی است. هنگامی که متد trimرا روی این رشته اعمال میکنیم، فضای خالی اصلی و انتهایی را حذف میکند و در نتیجه رشته Welcome to Faradarsبه وجود میآید. سپس رشته تمیز شده به کنسول وارد میشود. این متد مخصوصاً هنگام کار با ورودیهای کاربر یا دادههایی که ممکن است فضاهای غیرعمدی داشته باشند مفید است و نمایشی تمیز و ثابتی از رشته را تضمین میکند.
متد Eval در جاوا اسکریپت
متد Eval در جاوا اسکریپت اجرای کد نوشته شده به صورت رشته را امکانپذیر میکند. در اینجا مثال با توضیح برای درک بهت کار این متد رشته در جاوا اسکریپت آورده شده است:
1let expression = "2 + 3";
2let answer = eval(expression);
3// The eval() method is used to evaluate the string "2 + 3" as a JavaScript expression.
4
5console.log(answer);
6// The result is the numeric value 5.
در مثال فوق، نوعی عبارت رشتهای داریم که حاوی عملیات ریاضی ساده است. با اعمال متد evalدر این رشته، جاوا اسکریپت کدهای درون آن را تفسیر و اجرا میکند. نتیجه، در این مورد، مقدار عددی ۵ بوده که حاصل جمع ۲ و ۳ است. سپس نتیجه نهایی در کنسول ثبت میشود. توجه به این نکته مهم است که استفاده ازevalباید با احتیاط انجام شود زیرا اجرای کد دلخواه میتواند خطرات امنیتی ایجاد کند. به طور کلی توصیه میشود در صورت امکان، متدهای جایگزین به کار گرفته شوند.
متد Replace برای رشته های جاوا اسکریپت
متد Replace در جاوا اسکریپت برای به دست آوردن رشته جدید با جایگزینی بخشی مشخص شده از رشته موجود استفاده میشود. در اینجا یک مثالی همراه توضیح برای درک بهتر نحوه عملکرد رشته replace آورده شده است:
1let text = "Hello Faradars!";
2let result = text.replace('Faradars', 'Reader');
3// The replace() method searches for the substring 'Faradars' in the string and replaces it with 'Reader'.
4
5console.log(result);
6// The result is the string "Hello Reader!".
در مثال بالا رشته متنی حاوی Hello Faradarsاست. با اعمال متدreplaceدر این رشته، زیر رشته Faradarsرا جستجو کرده و آن را با Readerجایگزین میکند. رشته به دست آمده Hello Reader!، سپس به کنسول وارد میشود. این متد برای ایجاد جایگزینی در رشتهها، مانند جایگزینی کلمات یا کاراکترهای خاص مفید است.
متد رشته Repeat در جاوا اسکریپت
متد Repeat در جاوا اسکریپت برای کپی کردن رشته معین به تعداد دفعات مشخص شدهای استفاده میشود که مثال زیر درک بهتری از این متد از میان متدهای رشته در جاوا اسکریپت به ما میدهد.
1let sayHello = 'Hello Faradars!'.repeat(3);
2// The repeat() method is used to repeat the string 'Hello Faradars!' three times.
3
4console.log(sayHello);
5// The output is the string "Hello Faradars!Hello Faradars!Hello Faradars!".
در مثال بالا، نوعی رشته sayHello وجود دارد که حاوی متن Hello Faradarsاست. با اعمال متد repeatبا آرگومان ۳، رشته سه بار تکرار میشود. رشته به دست آمده ٣ بار Hello Faradars، کنسول ثبت میشود. این متد هم زمانی مفید است که کاربر نیاز به ایجاد الگوهای تکراری یا دنبالهای از رشتهها در کد خود دارد.
متد Search در جاوا اسکریپت
از متد Search در جاوا اسکریپت برای یافتن نوعی الگوی خاص در رشته استفاده شده و موقعیت اندیس تطابق اول را بازمیگرداند. مثال زیر درک بهتری از نحوه عملکرد این متد از میان متدهای رشته در جاوا اسکریپت به ما میدهد:
1let text = 'Hello Faradars!';
2console.log(text.search('Faradars'));
3// The search() method searches for the pattern 'Faradars' in the string 'Hello Faradars!', and the output is 6 – indicating the match is found at index position 6.
در این مثال، رشته متنی ما حاوی Hello Faradarsاست. سپس متد Searchبرای یافتن موقعیت شاخص در جایی که الگوی فرادرس برای اولین بار در رشته ظاهر میشود، اعمال خواهد شد و خروجی که ۶ است روی کنسول چاپ میشود.
متد Escape در جاوا اسکریپت
متد Escape از لحاظ تاریخی برای رمزگذاری کاراکترهای خاص در رشته برای انتقال در رایانهها و شبکههای مختلف استفاده میشود ولی با این حال، منسوخ شده است. در استاندارهای جدید استفاده از encodeURI برای هدفی مشابه توصیه میشود. مثال زیر برای درک نحوه کار با این متد است:
1// Deprecated Method (Not Recommended)
2let specialCharacters = escape("I'm John Smith!");
3console.log(specialCharacters);
4
5// Instead, Use encodeURI() Method
6let encodedString = encodeURI("I'm John Smith!");
7console.log(encodedString);
در مثال بالا، متد escapeبرای رمزگذاری کاراکترهای خاص در رشته I'm John Smith!استفاده میشود. با این حال، مهم است که توجه داشته باشیم که escapeمنسوخ شده و جایگزین مدرنتر و توصیهشده encodeURIاست. مورد دوم در مثال برای رمزگذاری مناسب ارائه شده است.
نکات اضافه در مورد متدهای رشته در جاوا اسکریپت
فهرست فوق از متدهای رشته در جاوا اسکریپت همه متدهای رشتهای در این زبان را پوشش نمیدهد. متدهای بیشتری برای یادگیری وجود دارد. برای مثال متدهای مهم دیگری مانند «padStart» و «padEnd» وجود دارند که ممکن است چندان برای کاربران آشنا نباشند. این متدها به شما کاربران میدهند نوعی رشته در ابتدا یا انتهای مقدار رشتهای دیگر اضافه کند. برای تسلط بر رشتهها و متدهای آنها، تمرین و تکرار بسیار حائز اهمیت است. کاربردهای بیشماری برای رشتهها وجود دارد و متدها میتوانند عملکرد آنها را به شیوههای مختلف افزایش دهند.
همانطور که به مطالعه و بررسی متدهای رشته در جاوا اسکریپت میپردازید، محدودیتها و رفتارهای آنها را درک خواهید کرد. ترکیب متدهای مختلف برای انجام کارهای قدرتمند و رفع نیازهای برنامه هم نکته بسیار حائز اهمیتی است.
کلام پایانی
رشته یک سری کاراکتر است که برای نمایش متن استفاده میشود. در جاوا اسکریپت، رشتهها انواع دادههای اساسی هستند. میتوان آنها را با قرار دادن متن در کوتیشنهای تک، دوتایی یا بکتیک ایجاد کرد. الفبای الگو نوعی ویژگی مفید است که به کد پاکتر به وسیله درونیابی رشتهای اجازه میدهد و ایجاد رشتههای چندخطی را در صورت نیاز تسهیل میکند. از آنجایی که رشتهها نقش مهمی در برنامه نویسی دارند، تسلط بر دستکاری کارآمد آنها ضروری است.
در طول این مطلب از مجله فرادرس، در کنار تعریف رشته و مطالعه ویژگیهای آنها، متدهای رشته در جاوا اسکریپت را همراه با ارائه مثالهایی کاملاً کاربردی مورد بررسی و بازبینی قرار دادیم. همچنین متدهای بسیار بیشتری برای کار با رشتهها در جاوا اسکریپت وجود دارد که در این مطلب به آنها پرداخته نشده است.