در این بخش از سری آموزش جاوا اسکریپت قصد داریم نحوه ساخت و دستکاری رشته ها در جاوا اسکریپت یاد بگیریم.
رشته (string) در جاوا اسکریپت چیست
یک رشته شامل توالی از اعداد, حروف, کاراکترهای ویژه و مقادیر ریاضی و یا اینکه ترکیبی از همه آنها است.
رشته های می توانند با قرار گیری در بین دو علامت ‘
یا “
که نقل قول نامیده می شوند, ایجاد شوند.
1 2 |
var myString = 'Hello World!'; // Single quoted string var myString = "Hello World!"; // Double quoted string |
شما می توانید از این علامت های quote داخل رشته نیز استفاده کنید البته تا جایی که باعث تداخل در باز و بسته شدن این بلاک نشود.
1 2 3 4 |
var str1 = "it's okay"; var str2 = 'He said "Goodbye"'; var str3 = "She replied 'Calm down, please'"; var str4 = 'Hi, there!"; // Syntax error - quotes must match |
به هرحال, می توانید از ‘
داخل یک رشته ‘ ‘
یا از “
داخل یک رشته “ ”
استفاده کنید با این شرط که قبل از آن \
را قرار بدید.
1 2 3 |
var str1 = 'it\'s okay'; var str2 = "He said \"Goodbye\""; var str3 = 'She replied \'Calm down, please\''; |
کاراکترهای خاص
این کاراکترهای زمانی استفاده می شود که می خواهید کاراکتری که با کیبورد قابل تایپ نیست را ایجاد کنید.
\n
با کاراکتر خط جدید (newline) جایگزین می شود\t
با کاراکتر تب (tab) جایگزین می شود\r
با کاراکتر رفتن سرخط جایگزین می شود\b
با کاراکتر backspace جایگزین می شود\\
با کاراکتر \ جایگزین می شود
1 2 3 4 5 6 7 8 |
var str1 = "The quick brown fox \n jumps over the lazy dog."; document.write("<pre>" + str1 + "</pre>"); // Create line break var str2 = "C:\Users\Downloads"; document.write(str2); // Prints C:UsersDownloads var str3 = "C:\\Users\\Downloads"; document.write(str3); // Prints C:\Users\Downloads |
انجام عملیات روی رشته ها
جاوا اسکریپت چندین ویژگی و متد برای انجام عملیات روی مقادیر رشته ای ارایه می دهد.
از لحاظ تکنیکی, فقط آبجکت ها می توانند خصوصیت و متد داشته باشند. اما نوع داده اولیه جاوا اسکریپت زمانی که به آنها یک خصوصیت را با . اختصاص می دهید, می تواند مثل آبجکت ها عمل کنند.
این عملیات توسط مفسر جاوا اسکریپت در پشت صحنه بصورت اتوماتیک اجرا می شود.
دریافت طول یک رشته
خصوصیت length
, طول رشته را برگشت می دهد که شامل تعداد کاراکترهای رشته است.این طول شامل کاراکترهای خاص مانند \t
یا \n
است.
1 2 3 4 5 |
var str1 = "This is a paragraph of text."; document.write(str1.length); // Prints 28 var str2 = "This is a \n paragraph of text."; document.write(str2.length); // Prints 30, because \n is only one character |
نکته: از آنجایی که length
یک property یا خصوصیت است و نه تابع, پس از پارانتز بعد از آن مثل str.length()
استفاده نکنید.
یافتن یک رشته داخل رشته دیگر
شما می توانید از متد indexOf()
برای پیدا کردن زیررشته یا رشته داخل یک رشته استفاده کنید.
این متد ایندکس یا موقعیت اولین رشته مشخص شده را در رشته مورد نظر برگشت می دهد.
1 2 3 |
var str = "If the facts don't fit the theory, change the facts."; var pos = str.indexOf("facts"); alert(pos); // 0utputs: 7 |
مشابه آن, می توانید از متد lastIndexOf()
برای دریافت ایندکس یا موقعیت آخرین رشته مشخص شده را در رشته مورد نظر برگشت می دهد.
1 2 3 |
var str = "If the facts don't fit the theory, change the facts."; var pos = str.lastIndexOf("facts"); alert(pos); // 0utputs: 46 |
هر دو متد indexOf()
و lastIndexOf()
مقدار -۱ را زمانی که رشته یافت نشد برگشت می دهند. همچنین این دو متد یک مقدار پارامتر عددی را بصورت اختیاری برای مشخص کردن موقعیت رشته برای شروع جستجو را دریافت می کنند:
1 2 3 4 5 6 7 8 9 |
var str = "If the facts don't fit the theory, change the facts."; // Searching forwards var pos1 = str.indexOf("facts", 20); alert(pos1); // 0utputs: 46 // Searching backwards var pos2 = str.lastIndexOf("facts", 20); alert(pos2); // 0utputs: 7 |
نکته: کاراکترهای یک رشه از چپ به راست ایندکس گذاری شدند. ایندکس اولین کاراکتر ۰
است و ایندکس آخرین کاراکتر بصورت myStr.lenght – ۱
مشخص می شود.
جستجو یک الگو در رشته
شما می توانید از متد search()
برای جستجوی بخشی از متن یا الگو داخل رشته استفاده کنید.
همانند متد indexOf()
نیز متد search()
ایندکس اولین تطابق را برگشت می دهد. و اگر چیزی پیدا نشد -۱
و برعکس indexOf()
, می تواند از عبارات باقاعده (regex) برای جستجوی پیشرفته تر به عنوان آرگومان استفاده کند.
1 2 3 4 5 6 7 8 9 |
var str = "Color red looks brighter than color blue."; // Case sensitive search var pos1 = str.search("color"); alert(pos1); // 0utputs: 30 // Case insensitive search using regexp var pos2 = str.search(/color/i); alert(pos2); // 0utputs: 0 |
نکته: متد search()
جستجوی همگانی را پشتیبانی نمی کند و فلگ g
(مثل /pattern/g
) را نادیده می گیرد.
در مورد عبارات با قاعده در جاوا اسکریپت در جلسات بعدی صحبت می کنیم.
امیدوارم در این بخش آموزش جاوا اسکریپت, از قسمت اول رشته ها در جاوا اسکریپت نهایت استفاده را برده باشید.
در بخش بعدی با قسمت دوم رشته ها در جاوا اسکریپت که شامل خارج کردن یک رشته از زیررشته, تبدیل حروف کوچک و بزرگ به یکدیگر و جایگزین رشته ها و غیره .. آشنا می شوید.
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق باشید.