با بخش دوم از رشته ها در جاوا اسکریپت از سری آموزش جاوا اسکریپت در خدمت شما هستیم.
در بخش اول رشته ها در جاوا اسکریپت با نحوه کار با رشته ها برای دریافت طول رشته, جستجو در آن و غیره آشنا شدیم. در این بخش قصد داریم بقیه مباحث باقی کار با رشته ها را بررسی کنیم.
خارج کردن یک زیر رشته از رشته
می توانید از متد slice()
برای جدا کردن یک بخش از رشته استفاده کنید.
این متد دو پارامتر دریافت می کند: ایندکس شروع و یک ایندکس پایان اختیاری مثل str.slice(startIndex, endIndex)
مثال زیر بخشی از رشته را از موقعیت ۴ تا ۱۵ دریافت می کند.
1 2 3 |
var str = "The quick brown fox jumps over the lazy dog."; var subStr = str.slice(4, 15); document.write(subStr); // Prints: quick brown |
همچنین می توانید یک مقدار منفی را مشخص کنید. با مقدار منفی مثل strLength + startIndex
رفتار می شود, زمانی که strLength
شامل طول رشته باشد.
برای مثال, اگر startIndex
مقدار -۵
باشد مانند strLength – ۵
با آن رفتار می شود.
اگر startIndex
بزرگتر یا مساوی طول رشته باشد, متد slice()
مقدار خالی از رشته را برگشت می دهد. همچنین اگر مقدار اختیاری endIndex
مشخص نشده باشد, متد slice()
تا پایان رشته را برگشت می دهد.
1 2 3 |
var str = "The quick brown fox jumps over the lazy dog."; document.write(str.slice(-28, -19)); // Prints: fox jumps document.write(str.slice(31)); // Prints: the lazy dog. |
شما می توانید از متد substring()
برای استخراج بخشی از رشته داده شده بر اساس ایندکس شروع و پایان استفاده کنید مثل str.substring(startIndex, endIndex)
متد substring()
مشابه متد slice()
است اما با چند تفاوت کوچک :
- اگر آرگومان کمتر از
۰
یاNaN
باشد, بصورت۰
درنظر گرفته می شود. - اگر آرگومان بزرگتر از
str.length
باشد, خودstr.length
در نظر گرفته می شود. - اگر
startIndex
بزرگتر ازendIndex
باشد, پسsubstring()
هر دو را مبادله می کند مثلstr.substring(5, 0) == str.substring(0, 5)
مثال زیر نحوه صحیح کار این متد را نشان می دهد:
1 2 3 4 5 |
var str = "The quick brown fox jumps over the lazy dog."; document.write(str.substring(4, 15)); // Prints: quick brown document.write(str.substring(9, 0)); // Prints: The quick document.write(str.substring(-28, -19)); // Prints nothing document.write(str.substring(31)); // Prints: the lazy dog. |
استخراج یک مقدار ثابت کاراکتر از رشته
جاوا اسکریپت همچنین متد substr()
را که مشابه slice()
با یک تفاوت نامحسوس است را ارایه داده است و آن این است که پارامتر دوم تعداد کاراکترهای های مورد نیاز برای استخراج را دریافت می کند مثل str.substr(startIndex, length)
اگر length
مساوی ۰ یا عددی منفی باشد, یک رشته خالی برگشت داده می شود.
1 2 3 4 5 |
var str = "The quick brown fox jumps over the lazy dog."; document.write(str.substr(4, 15)); // Prints: quick brown fox document.write(str.substr(-28, -19)); // Prints nothing document.write(str.substr(-28, 9)); // Prints: fox jumps document.write(str.substr(31)); // Prints: the lazy dog. |
جایگزین محتوای رشته
می توانید از متد replace()
برای جایگزین کردن بخشی از یک رشته به جای رشته بعدی استفاده کنید.
این متد دو پارامتر که یکی regex برای تطابق یا موقعیت رشته است و دومی نیز رشته ای که قصد دارید جایگزین شود مثل str.replace(regexp|substr, newSubstr)
این متد replace()
یک رشته جدید را برگشت می دهد و تاثیری روی رشته اصلی ندارد :
1 2 3 |
var str = "Color red looks brighter than color blue."; var result = str.replace("color", "paint"); alert(result); // 0utputs: Color red looks brighter than paint blue. |
بطور پیش فرض متد replace()
فقط اولین مقدار یافت شده را جایگزین می کند و برای حایگزین کردن حساس به حروف است و باید برای تطابق دیگر حروف نیز از i
بصورت زیر در الگوی regex استفاده کنید.
1 2 3 |
var str = "Color red looks brighter than color blue."; var result = str.replace(/color/i, "paint"); alert(result); // 0utputs: paint red looks brighter than color blue. |
مشابه آن برای جایگزین کردن تمام نتایج یافت شده می توانید g را نیز اضافه کنید
1 2 3 |
var str = "Color red looks brighter than color blue."; var result = str.replace(/color/ig, "paint"); alert(result); // 0utputs: paint red looks brighter than paint blue. |
تبدیل یک رشته به حروف کوچک یا بزرگ
می توانید از متد toUpperCase()
برای تبدیل یک رشته به حروف بزرگ استفاده کنید, مثل این:
1 2 3 |
var str = "Hello World!"; var result = str.toUpperCase(); document.write(result); // Prints: HELLO WORLD! |
مشابه آن, می توانید از toLowerCase()
برای تبدیل رشته به حروف کوچک استفاده کنید, مثل این:
1 2 3 |
var str = "Hello World!"; var result = str.toLowerCase(); document.write(result); // Prints: hello world! |
چسابندن دو یا چند رشته
می توانید دو یا چند رشته را با +
و +=
به هم چسبانده یا ترکیب کنید.
1 2 3 4 5 6 7 8 |
var hello = "Hello"; var world = "World"; var greet = hello + " " + world; document.write(greet); // Prints: Hello World var wish = "Happy"; wish += " New Year"; document.write(wish); // Prints: Happy New Year |
می توانید از متد concat()
نیز برای ترکیب رشته ها استفاده کنید اما اصلا پیشنهاد نمی شود.
دسترسی به یک کاراکتر از رشته
می توانید از متد charAt()
برای دسترسی به یک کارکتر منحصر به فرد از یک رشته استفاده کنید مثل str.charAt(index)
مقدار index
باید یک مقدار عددی بین ۰
و str.length – ۱
است. اگر ایندکسی که مشخص کردید هیچ کاراکتری را برگشت ندهد, مقدار پیش فرض ۰
خواهد بود.
1 2 3 4 5 |
var str = "Hello World!"; document.write(str.charAt()); // Prints: H document.write(str.charAt(6)); // Prints: W document.write(str.charAt(30)); // Prints nothing document.write(str.charAt(str.length - 1)); // Prints: ! |
راه بهتری نیز برای اینکار وجود دارد. از آنجا که ECMAScript 5 می تواند با رشته ها را مثل یک آرایه قابل خواندن رفتار کند و به هر کاراکتر یکتا از رشته با []
دسترسی داشته باشد می توانید از آن به جای charAt()
استفاده کنید.
1 2 3 4 5 |
var str = "Hello World!"; document.write(str[0]); // Prints: H document.write(str[6]); // Prints: W document.write(str[str.length - 1]); // Prints: ! document.write(str[30]); // Prints: undefined |
نکته: تنها تفاوت بین دسترسی به یک رشته با charAt()
و براکت مربعی []
این است که اگر کاراکتری پیدا نشد, []
مقدار undefined
را برگشت می دهد ولی charAt()
یک رشته خالی را برگشت می دهد.
تبدیل یک رشته به آرایه
تابع split()
می تواند یک رشته را به آرایه ای از رشته ها تبدیل کنید
str.split(separator, limit)
- آرگومان
separator
یک جداکننده که رشته ها را از هم جدا می کند مشخص می کند و آرگومانlimit
نیز حداکثر طول آرایه مشخص می کند. - اگر آرگومان
separator
مشخص نشده باشد, کل رشته به عنوان اولین المان آرایه قرار می گیرد.
1 2 3 4 5 6 7 8 9 10 |
var fruitsStr = "Apple, Banana, Mango, Orange, Papaya"; var fruitsArr = fruitsStr.split(", "); document.write(fruitsArr[0]); // Prints: Apple document.write(fruitsArr[2]); // Prints: Mango document.write(fruitsArr[fruitsArr.length - 1]); // Prints: Papaya // Loop through all the elements of the fruits array for(var i in fruitsArr) { document.write("<p>" + fruitsArr[i] + "</p>"); } |
برای جدا کردن یک رشته به آرایه ای از رشته ها می توانید از رشته خالی “”
به عنوان جداکننده استفاده کنید.
1 2 3 4 5 6 7 8 9 10 |
var str = "INTERSTELLAR"; var strArr = str.split(""); document.write(strArr[0]); // Prints: I document.write(strArr[1]); // Prints: N document.write(strArr[strArr.length - 1]); // Prints: R // Loop through all the elements of the characters array and print them for(var i in strArr) { document.write("<br>" + strArr[i]); } |
در جلسات بعدی در مورد حلقه های جاوا اسکریپت صحبت خواهیم کرد.
امیدوارم از قسمت آخر کار با رشته ها در جاوا اسکریپت نهایت استفاده را برده باشید.
در بخش بعدی با نحوه کار با اعداد در جاوا اسکریپت آشنا می شوید.
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق باشید.