مقدمه
رشتهها یکی از اصلیترین دادهها در برنامهنویسی هستند. تقریباً تمام برنامههایی که توسعه میدهید، از مدیریت رشتهها برای نمایش متن یا پردازش دادههای متنی استفاده میکنند. جاوا اسکریپت به عنوان یکی از زبانهای قدرتمند در وب، ابزارهای متعددی برای دستکاری رشتهها فراهم کرده است. در این مقاله قصد داریم به صورت کامل با روشها و متدهای مختلف کار با رشتهها آشنا شویم.
۱. مفهوم رشته در جاوا اسکریپت
رشته یا String در جاوا اسکریپت به مجموعهای از کاراکترها گفته میشود که داخل کوتیشنها قرار میگیرند. رشته میتواند شامل اعداد، حروف و حتی علائم خاص باشد.
۱.۱ تعریف رشته
رشتهها در جاوا اسکریپت دادهای متنی هستند که میتوانند هر نوع محتوای متنی را نمایش دهند. برای مثال:
let text = "سلام دنیا!";
۱.۲ نحوه تعریف رشته در جاوا اسکریپت
در جاوا اسکریپت، سه روش برای تعریف رشته وجود دارد:
کوتیشن تکی (Single Quotes):
let str1 = 'این یک رشته است';
کوتیشن دوتایی (Double Quotes):
let str2 = "این هم یک رشته دیگر است";
Template Literals (با استفاده از backticks):
let str3 = `این یک رشته با قابلیت افزودن متغیر است`;
۲. طول رشته (Length)
۲.۱ مفهوم طول رشته
طول یک رشته به تعداد کاراکترهای موجود در آن گفته میشود. جاوا اسکریپت با استفاده از ویژگی .length این امکان را فراهم کرده است.
۲.۲ دسترسی به طول رشته با .length
برای مثال:
let text = "جاوا اسکریپت";
console.log(text.length); // 12
۲.۳ مثالهایی از استفادههای عملی
تصور کنید میخواهید بررسی کنید که آیا طول رمز عبور وارد شده توسط کاربر کافی است:
let password = "12345";
if (password.length < 8) {
console.log("رمز عبور باید حداقل ۸ کاراکتر باشد");
}
۳. کار با کاراکترهای رشته
۳.۱ دسترسی به کاراکترهای خاص با استفاده از اندیسها
در جاوا اسکریپت میتوان به هر کاراکتر رشته با استفاده از موقعیت (Index) آن دسترسی پیدا کرد. موقعیتها از صفر شروع میشوند:
let text = "جاوا اسکریپت";
console.log(text[0]); // ج
۳.۲ استفاده از متد charAt
متد charAt عملکردی مشابه اندیس دارد، اما به صورت تابعی عمل میکند:
console.log(text.charAt(1)); // ا
۳.۳ تفاوت استفاده از اندیس و charAt
در صورت استفاده از اندیسی خارج از محدوده، undefined برمیگردد، اما charAt یک رشته خالی را برمیگرداند.
۴. جستجو در رشتهها
۴.۱ استفاده از indexOf برای جستجوی کلمات
با استفاده از این متد میتوانید موقعیت اولین وقوع کلمه را پیدا کنید:
let sentence = "من جاوا اسکریپت را دوست دارم";
console.log(sentence.indexOf("جاوا")); // 3
۴.۲ متد lastIndexOf
برای یافتن آخرین وقوع یک کلمه، از این متد استفاده کنید:
console.log(sentence.lastIndexOf("دوست")); // 16
۴.۳ تفاوتهای این دو متد
indexOf از ابتدای رشته جستجو میکند، در حالی که lastIndexOf از انتها به ابتدای رشته میگردد.
۵. استخراج و جدا کردن بخشهایی از رشته
۵.۱ استفاده از slice
این متد برای برش دادن بخشی از رشته استفاده میشود:
let text = "جاوا اسکریپت";
console.log(text.slice(0, 4)); // جاوا
۵.۲ مقایسه slice با substring
هر دو متد برای استخراج بخشهایی از رشته استفاده میشوند، اما slice از اندیس منفی پشتیبانی میکند.
۵.۳ معرفی substr و موارد استفاده آن
متد substr برای استخراج بخشهایی از رشته بر اساس طول استفاده میشود:
console.log(text.substr(5, 4)); // اسکر
۶. جایگزینی کاراکترها و کلمات در رشتهها
۶.۱ متد replace
این متد اولین وقوع یک کلمه یا عبارت را جایگزین میکند:
let sentence = "من جاوا را دوست دارم";
console.log(sentence.replace("جاوا", "پایتون")); // من پایتون را دوست دارم
۶.۲ جایگزینی همه مقادیر با replaceAll
let text = "جاوا جاوا جاوا";
console.log(text.replaceAll("جاوا", "پایتون")); // پایتون پایتون پایتون
۶.۳ نکاتی در مورد Regular Expressions
برای جایگزینی پیشرفتهتر میتوانید از الگوها استفاده کنید.
۷. تبدیل رشتهها
۷.۱ تبدیل به حروف بزرگ با toUpperCase
برای تبدیل تمام کاراکترهای یک رشته به حروف بزرگ، از متد toUpperCase استفاده میکنیم:
let text = "جاوا اسکریپت";
console.log(text.toUpperCase()); // جاوا اسکریپت
۷.۲ تبدیل به حروف کوچک با toLowerCase
این متد برعکس متد قبلی، همه حروف را به کوچک تبدیل میکند:
console.log(text.toLowerCase()); // جاوا اسکریپت
۷.۳ تغییر ترکیبی حروف با متدهای سفارشی
میتوانید با استفاده از متدهای ترکیبی، حروف اول کلمات را بزرگ و باقی را کوچک کنید:
function capitalize(str) {
return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
}
console.log(capitalize("جاوا اسکریپت")); // جاوا اسکریپت
۸. حذف فاصلهها در رشتهها
۸.۱ استفاده از trim
این متد فاصلههای اضافی ابتدا و انتهای رشته را حذف میکند:
let text = " جاوا اسکریپت ";
console.log(text.trim()); // جاوا اسکریپت
۸.۲ trimStart و trimEnd
برای حذف فاصلهها فقط از ابتدا یا انتها میتوان از این متدها استفاده کرد:
console.log(text.trimStart()); // جاوا اسکریپت
console.log(text.trimEnd()); // جاوا اسکریپت
۸.۳ مثالهایی از استفادههای عملی
این متدها هنگام پردازش ورودیهای کاربر بسیار مفید هستند، مثلاً حذف فاصلههای اضافی در فرمهای ثبتنام.
۹. تقسیم و ترکیب رشتهها
۹.۱ متد split برای جدا کردن رشتهها
متد split رشتهها را به آرایه تبدیل میکند. برای مثال:
let sentence = "جاوا,اسکریپت,یک,زبان,برنامهنویسی,است";
console.log(sentence.split(",")); // ["جاوا", "اسکریپت", "یک", "زبان", "برنامهنویسی", "است"]
۹.۲ ترکیب رشتهها با concat
برای ترکیب چند رشته میتوانید از متد concat استفاده کنید:
let str1 = "جاوا";
let str2 = "اسکریپت";
console.log(str1.concat(" ", str2)); // جاوا اسکریپت
۹.۳ استفاده از اپراتور + برای ترکیب سریع
console.log(str1 + " " + str2); // جاوا اسکریپت
۱۰. تبدیل رشته به آرایه و بالعکس
۱۰.۱ معرفی متدهای تبدیل
میتوانید از split برای تبدیل رشته به آرایه و از join برای تبدیل آرایه به رشته استفاده کنید.
۱۰.۲ نحوه تبدیل آرایه به رشته با join
let words = ["جاوا", "اسکریپت", "عالی", "است"];
console.log(words.join(" ")); // جاوا اسکریپت عالی است
۱۰.۳ کاربردهای عملی در پروژهها
این متدها در پروژههایی مانند تجزیه فایلهای CSV یا ایجاد متن پویا کاربرد دارند.
۱۱. بررسی وجود کلمه در رشتهها
۱۱.۱ استفاده از متد includes
برای بررسی وجود یک کلمه یا عبارت در رشته از includes استفاده کنید:
let sentence = "جاوا اسکریپت بسیار کاربردی است";
console.log(sentence.includes("کاربردی")); // true
۱۲. رشتههای قابل تطبیق و الگوها
۱۲.۱ معرفی Regular Expressions
عبارتهای منظم (RegEx) ابزار قدرتمندی برای جستجوی الگوها در رشتهها هستند.
۱۲.۲ استفاده از متد match
برای یافتن مطابقتها با یک الگوی خاص:
let text = "جاوا اسکریپت 2024";
let matches = text.match(/\d+/);
console.log(matches[0]); // 2024
۱۲.۳ کاربردهای عملی در پروژهها
RegEx در مواردی مانند اعتبارسنجی ایمیل یا شماره تلفن بسیار مفید است.
۱۳. مقایسه رشتهها
۱۳.۱ استفاده از اپراتور == و ===
برای مقایسه دو رشته:
let str1 = "جاوا";
let str2 = "جاوا";
console.log(str1 === str2); // true
۱۳.۲ حساسیت به حروف بزرگ و کوچک
مقایسه رشتهها به حروف کوچک و بزرگ حساس است:
console.log("java" === "Java"); // false
۱۳.۳ مثالهایی از شرایط کاربردی
در کدهای مرتبط با فرمهای ورود، معمولاً برای مقایسه رشتهها از تبدیل به حروف کوچک استفاده میشود.
۱۴. ایجاد الگوهای پیچیده با Template Literals
۱۴.۱ استفاده از متغیرها در رشتهها
Template Literals کار با متغیرها و عبارات را سادهتر میکنند:
let language = "جاوا اسکریپت";
console.log(`من در حال یادگیری ${language} هستم!`);
۱۴.۲ افزودن خطوط جدید و فرمتدهی زیبا
let text = `جاوا اسکریپت
یک زبان برنامهنویسی
بسیار کاربردی است.`;
console.log(text);
۱۵. نکات و ترفندهای پیشرفته در کار با رشتهها
۱۵.۱ استفاده ترکیبی از متدها
برای ایجاد الگوهای پیچیده میتوانید چند متد را با هم ترکیب کنید:
let text = " جاوا اسکریپت ";
console.log(text.trim().toUpperCase().split(" ")); // ["جاوا", "اسکریپت"]
۱۵.۲ نکات بهینهسازی کد
- همیشه از متدهای مناسب با نیاز استفاده کنید.
- هنگام کار با رشتههای طولانی، به بهینه بودن کد توجه داشته باشید.