متد ها در جاوا اسکریپت: رشته ها - قسمت اول

01 بهمن 1397
javascript-string-methods

با سلام، در این قسمت از سری آموزشی برنامه نویسی جاوا اسکریپت، به بررسی متدهای (توابع) مخصوص رشته ها می پردازیم و برای هر کدام یک مثال خواهیم زد.

طول یک رشته

متد length طول یک رشته (تعداد کاراکتر ها) را به ما برمیگرداند:

var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var sln = txt.length;

خروجی این کد عدد 26 است زیرا رشته ی ما 26 کاراکتر داشته است.

پیدا کردن یک رشته داخل رشته ای دیگر

متد ()indexOf به شما کمک می کند تا ایندکس (index) اولین رخداد از رشته ی مورد نظرتان را پیدا کنید. منظور من از ایندکس این است که این متد خود کلمه را به شما برنمی گرداند بلکه مکان عددی آن (یعنی همان ایندکس) را به شما می دهد. مثال:

var str = "Please locate where 'locate' occurs!";
var pos = str.indexOf("locate");

خروجی این کد عدد 7 خواهد بود. چرا؟ قبلا هم گفته بودیم که جاوا اسکریپت، ایندکس ها را از صفر می شمارد. بنابراین اگر از ابتدای رشته شروع کنید، حرف p در کلمه ی please می شود ایندکس اول، حرف L می شود ایندکس دوم و ... تا زمانی که به حرف L در اولین کلمه ی Locate برسد.

دستور ()lastIndexOf آخرین رخداد از رشته را به شما می دهد. مثال:

var str = "Please locate where 'locate' occurs!";
var pos = str.lastIndexOf("locate");

خروجی این کد عدد 21 خواهد بود. آخرین رخداد کلمه ی locate می شود دومین باری که در رشته ی ما آمده است. L در locate دومی، شماره ی 21 خواهد بود.

نکته: اگر هر کدام از این متدها به جوابی نرسد (رشته ی مورد نظر را پیدا نکند) عدد -1 را برمیگرداند.

نکته: هر دو متد ()lastIndexOf و ()indexOf پارامتر دومی میگیرند که نشان دهنده ی نقطه ی شروع جست و جو است. مثال:

var str = "Please locate where 'locate' occurs!";
var pos = str.indexOf("locate",15);

این کد میگوید جست و جو را از ایندکس 15 شروع کن.

متد ()search

با استفاده از متد ()search نیز می توانید یک رشته را درون رشته ای دیگر پیدا کنید:

var str = "Please locate where 'locate' occurs!";
var pos = str.search("locate");

خروجی باز هم 7 خواهد بود.

سوال: فرق بین این دو متد چیست؟ آیا اصلا فرقی وجود دارد؟

بله، این دو متد یکی نیستند:

  • متد ()search بر خلاف متد ()indexOf نمی تواند پارامتر دوم (نقطه ی شروع جست و جو) بگیرد.
  • متد ()indexOf بر خلاف متد ()search نمی تواند جست و جو های پیشرفته (مانند عبارات با قاعده) را انجام دهد.

متد ()slice

این متد قسمتی از یک رشته را استخراج کرده و آن قسمت استخراج شده را بر میگرداند. این متد دو پارامتر می گیرد: یکی ایندکس شروع رشته و دیگری ایندکس پایان رشته (رشته ی استخراج شده شامل خود ایندکس پایانی نمی شود). مثال

var str = "Apple, Banana, Kiwi";
var res = str.slice(7, 13);

در این کد چنان تعیین کرده ایم که از ایندکس 7 الی ایندکس 13 برش بزند (خود 13 را شامل نمی شود) و به ما برگرداند. خروجی این کد رشته ی "Banana" خواهد بود.

هشدار: باز هم میگویم که جاوا اسکریپت شمارش را صفر شروع می کند.

نکته ی اول: اگر به این متد پارامتر های منفی بدهید، شمارش از آخر رشته شروع می شود. مثال:

var str = "Apple, Banana, Kiwi";
var res = str.slice(-12, -6);

خروجی این کد رشته ی "Banana" می باشد.

نکته ی دوم: اگر پارامتر دوم را خالی قرار دهید، جاوا اسکریپت تا آخر رشته را برمیگرداند:

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript String Methods</h2>

<p>The slice() method extract a part of a string
and returns the extracted parts in a new string:</p>

<p id="demo"></p>

<script>
var str = "Apple, Banana, Kiwi";
var res = str.slice(7);
document.getElementById("demo").innerHTML = res;
</script>

</body>
</html>

مشاهده ی خروجی کد در ادیتور آنلاین جاوا اسکریپت.

خروجی کد رشته ی "Banana, Kiwi" خواهد بود.

هشدار: پارامتر های منفی برای این متد در IE8 و قبل تر کار نمی کنند.

متد ()substring نیز دقیقا مانند متد ()slice است اما مقادیر منفی نمی گیرد.

متد ()substr

این متد دقیقا مشابه ()slice است با این تفاوت که پارامتر دوم به جای مشخص کردن ایندکس پایانی، طول رشته ی استخراج شده را مشخص می کند. مثال:

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript String Methods</h2>

<p>The substr() method extract a part of a string
and returns the extracted parts in a new string:</p>

<p id="demo"></p>

<script>
var str = "Apple, Banana, Kiwi";
var res = str.substr(7,6);
document.getElementById("demo").innerHTML = res;
</script>

</body>
</html>

خروجی این کد رشته ی "Banana" می باشد. مشاهده ی خروجی این کد در ادیتور آنلاین جاوا اسکریپت.

در واقع این کد میگوید از ایندکس 7 شروع به بُریدن کن و تا زمانی ادامه بده که رشته ی استخراج شده ی ما 6 کاراکتر بشود (کلمه ی banana شش حرف دارد).

نکته: اگر مانند متدهای ()slice و ()substring به این متد پارامتر دوم ندهید تا آخر رشته را برمیگرداند و اگر پارامتر منفی باشد، شمارش را از آخر رشته شروع می کند. مثال:

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript String Methods</h2>

<p>The substr() method extract a part of a string
and returns the extracted parts in a new string:</p>

<p id="demo"></p>

<script>
var str = "Apple, Banana, Kiwi";
var res = str.substr(-4);
document.getElementById("demo").innerHTML = res;
</script>

</body>
</html>

خروجی این کد رشته ی "Kiwi" می باشد. مشاهده ی خروجی در ادیتور آنلاین جاوا اسکریپت.

ادامه ی متدهای رشته ها را در جلسه ی بعدی دنبال خواهیم کرد.

در پناه حق.

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری آموزش جاوا اسکریپت | Javascript توصیه می‌کند:
نویسنده شوید
دیدگاه‌های شما (3 دیدگاه)

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

mehr
02 آذر 1399
در اینجا فرمودین متد ()substring نیز دقیقا مانند متد ()slice است اما مقادیر منفی نمی گیرد. اما پایین تر مقدار منفی بهش دادید و اجرا شده است

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

حسن فرجی
04 شهریور 1398
کاربر متد هاdی مثل indexOf یا slice چیه؟

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

امیر زوارمی
07 شهریور 1398
سلام دوست عزیز slice دو تا پارامتر میگیره: نقطه ی شروع و نقطه ی پایان. این نقاط شروع و پایان رو در یک آرایه پیاده میکنه و قسمتی که بین شروع و پایان باشه (خود قسمت پایان رو شامل نمیشه) انتخاب میکنه، ازشون توی یک آرایه ی جدید کپی میسازه. به زبون ساده تر برای کپی کردن قسمت خاصی از یک آرایه هست. مثال و اطلاعات بیشتر: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice indexOf هم یک پارامتر میگیره و اون رو داخل یک عنصر دیگه جست و جو میکنه. اگر چیزی پیدا نکرد منفی 1 و اگر مورد جست و جوی ما در مقصد وجود داشت، ایندکس اولین حرف از مورد جست و جوی ما رو برمیگردونه. به زبون ساده تر ایندکس اولین حرف از چیزی که ما جست و جو کردیم رو برمیگردونه. مثال و اطلاعات بیشتر: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

حسن فرجی
04 شهریور 1398
سلام نحوه شمردن در indexOf() و بقیه متد های صفحه چیه؟ آخه تو imdexof چطوری اندیسش 7 شد؟

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

امیر زوارمی
07 شهریور 1398
توی مثال بالا یک رشته داریم که توی متغیر str قرار داره: !Please locate where 'locate' occurs حالا میتونیم روی str متد indexOf رو صدا بزنیم. این کار رو که بکنیم از ایندکس صفر میشماریم. حرف p میشه ایندکس 0 حرف l میشه ایندکس 1 حرف e میشه ایندکس 2 حرف a میشه ایندکس 3 حرف s میشه ایندکس 4 حرف e میشه ایندکس 5 اسپیس میشه ایندکس 6 حرف L میشه ایندکس 7

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.