«رشته» (استرینگ | 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

برای بازیابی کاراکتر خاص در رشته به صورت زیر استفاده کرد:

توجه به این نکته ضروری است که بر خلاف برخی از ساختارهای داده غیر ابتدایی، مانند آرایه‌ها در جاوا اسکریپت، نمی‌توان کاراکترهای خاصی را در رشته به طور مستقیم تغییر داد که مثال زیر بیانگی این واقعیت است:

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 forestnTrouble 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

» وجود دارند که ممکن است چندان برای کاربران آشنا نباشند. این متدها به شما کاربران می‌دهند نوعی رشته در ابتدا یا انتهای مقدار رشته‌ای دیگر اضافه کند. برای تسلط بر رشته‌ها و متدهای آن‌ها، تمرین و تکرار بسیار حائز اهمیت است. کاربردهای بی‌شماری برای رشته‌ها وجود دارد و متدها می‌توانند عملکرد آن‌ها را به شیوه‌های مختلف افزایش دهند.

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

کلام پایانی

رشته یک سری کاراکتر است که برای نمایش متن استفاده می‌شود. در جاوا اسکریپت، رشته‌ها انواع داده‌های اساسی هستند. می‌توان آن‌ها را با قرار دادن متن در کوتیشن‌های تک، دوتایی یا بکتیک ایجاد کرد. الفبای الگو نوعی ویژگی مفید است که به کد پاک‌تر به وسیله درون‌یابی رشته‌ای اجازه می‌دهد و ایجاد رشته‌های چندخطی را در صورت نیاز تسهیل می‌کند. از آنجایی که رشته‌ها نقش مهمی در برنامه نویسی دارند، تسلط بر دستکاری کارآمد آن‌ها ضروری است.

در طول این مطلب از مجله فرادرس، در کنار تعریف رشته و مطالعه ویژگی‌های آن‌ها، متدهای رشته در جاوا اسکریپت را همراه با ارائه مثال‌هایی کاملاً کاربردی مورد بررسی و بازبینی قرار دادیم. همچنین متدهای بسیار بیشتری برای کار با رشته‌ها در جاوا اسکریپت وجود دارد که در این مطلب به آن‌ها پرداخته نشده است.

source

توسط expressjs.ir