متد های جستجو رشته JS

در این بخش به بررسی متدهای جستجو رشته می پردازیم.

string.indexOf() ایندکس اولین وقوع جستجو string.lastIndexOf() ایندکس آخرین وقوع جستجو string.search() ایندکس اولین وقوع جستجو + regex string.match() آرایه اولین وقوع جستجو + regex string.matchAll() آرایه تمام وقوع جستجو + regex string.includes() بولین امکان وقوع جستجو string.startsWith() بولین امکان وقوع جستجو در ابتدا string.endsWith() بولین امکان وقوع جستجو در انتها

متد indexOf() در JS

متد ()indexOf، یک رشته را جستجو می کند. این متد ایندکس اولین وقوع را از ابتدای رشته بر می گرداند.

این متد دو پارامتر دریافت می کند.

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

نکته: مقدار برگشتی متد indexOf، یک numbers است. 

let text = "for web development need JS, JS very important!";
document.getElementById("demo").innerHTML = text.indexOf("JS");
let text = "for web development need JS, JS very important!";
document.getElementById("demo").innerHTML = text.indexOf("JS", 26);

نکته: در صورت پیدا نکردن نتیجه، 1- برگردانده می شود.

نکته: متد indexOf، حساس به حروف بزرگ و کوچک است.

let text = "for web development need JS, JS very important!";
document.getElementById("demo").innerHTML = text.indexOf("js");

نکته: متد indexOf از عبارت منظم (RegExp) پشتیبانی نمی کند.

متد lastIndexOf() در JS

متد ()lastIndexOf، یک رشته را جستجو می کند. این متد ایندکس آخرین وقوع را از انتهای رشته بر می گرداند.

این متد دو پارامتر دریافت می کند.

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

نکته: مقدار برگشتی متد lastIndexOf، یک numbers است. 

let text = "for web development need JS, JS very important!";
document.getElementById("demo").innerHTML = text.lastIndexOf("JS");

نکته: در صورت پیدا نکردن نتیجه، 1- برگردانده می شود.

نکته: متد lastIndexOf، حساس به حروف بزرگ و کوچک است.

let text = "for web development need JS, JS very important!";
document.getElementById("demo").innerHTML = text.lastIndexOf("js");

نکته: متد lastIndexOf از عبارت منظم (RegExp) پشتیبانی نمی کند.

متد search() در JS

متد ()search، یک رشته را جستجو می کند. این متد ایندکس اولین وقوع را از ابتدای رشته بر می گرداند.

نکته: مقدار برگشتی متد search، یک numbers است. 

let text = "for web development need JS, JS very important!";
document.getElementById("demo").innerHTML = text.search("JS");

نکته: متد search فقط یک پارامتر دریافت می کند.

نکته: متد search از عبارت منظم (RegExp) پشتیبانی می کند.

let text = "for web development need JS, JS very important!";
document.getElementById("demo").innerHTML = text.search(/js/i);

تفاوت متد search() با indexOf()

دو متد indexOf و search کارایی مشابهی دارند ولی:

  1. متد search() فقط یک پارامتر دریافت می کند.
  2. متد search() از عبارت باقاعده پشتیبانی می کند.

و

  1. متد indexOf() دو پارامتر دریافت می کند.
  2. متد indexOf() از عبارت باقاعده پشتیبانی نمی کند.

متد match() در JS

متد ()match، یک رشته را جستجو می کند. این متد یک آرایه شامل اولین وقوع را بر می گرداند.

نکته: مقدار برگشتی متد match، یک آرایه است. 

let text = "for web development need JS, JS very important! js is simple";
const js_matchs = text.match("JS");
document.getElementById("demo").innerHTML = js_matchs.length + " " + js_matchs;

نکته:  متد match از عبارت باقاعده (RegExp) پشتیبانی می کند.

let text = "for web development need JS, JS very important! js is simple";
const js_matchs = text.match(/JS/);
document.getElementById("demo").innerHTML = js_matchs.length + " " + js_matchs;

نکته: در متد match، با استفاده از عبارت باقاعده (regex) با اصلاح کننده g (مخفف globaly) می توان تمام مطابقت ها را پیدا کرد.

let text = "for web development need JS, JS very important! js is simple";
const js_matchs = text.match(/JS/g);
document.getElementById("demo").innerHTML = js_matchs.length + " " + js_matchs;

نکته: در متد match، با استفاده از عبارت باقاعده (regex) با اصلاح کننده i (مخفف insensitive) می توان بدون حساسیت به حروف بزرگ و کوچک مطابقت ها را پیدا کرد.

let text = "for web development need JS, JS very important! js is simple";
const js_matchs = text.match(/JS/gi);
document.getElementById("demo").innerHTML = js_matchs.length + " " + js_matchs;

نکته: غالبا متد match برای یافتن تعداد مطابقت های موجود در رشته استفاده می شود. همانطور که در نمونه کد بالا دیدید، با کمک length تعداد مطابقت ها (3) چاپ شده است.

نکته:  عبارت با قاعده یا Regular Expression به صورت مخفف RegEx یا RegExp هم نوشته می شود. این عبارت ها، استاندارد های از پیش تعریف شده هستند که به کمک آن ها می توان با انعطاف بیشتری رشته ها را بررسی کرد. در JS عبارت های با قاعده در ابتدا و انتهای خود دارای اسلش (/) هستند و بدون کوتیشن نوشته می شوند. حروفی مانند i و g اصلاح کننده (modifier) نامیده می شوند.

متد matchAll() در JS

متد ()matchAll، یک رشته را جستجو می کند. این متد یک آرایه شامل تمام وقوع ها را بر می گرداند. 

نکته: مقدار برگشتی متد matchAll، یک آرایه است.

let text = "for web development need JS, JS very important! js is simple";
const js_matchs = text.matchAll("JS");
document.getElementById("demo").innerHTML = Array.from(js_matchs);

نکته: در متد matchAll، حتما باید از Array.from() استفاده کرد.

نکته:  متد matchAll از عبارت باقاعده (RegExp) پشتیبانی می کند. در صورت استفاده از عبارت باقاعده حتما باید از اصلاح کننده g استفاده شود. در غیر این صورت ارور بر می گرداند.

let text = "for web development need JS, JS very important! js is simple";
const js_matchs = text.matchAll(/JS/g);
document.getElementById("demo").innerHTML = Array.from(js_matchs);

نکته: در متد matchAll، با استفاده از عبارت باقاعده (regex) با اصلاح کننده i (مخفف insensitive) می توان بدون حساسیت به حروف بزرگ و کوچک مطابقت ها را پیدا کرد.

let text = "for web development need JS, JS very important! js is simple";
const js_matchs = text.matchAll(/JS/gi);
document.getElementById("demo").innerHTML = Array.from(js_matchs);

متد includes() رشته در JS

متد includes()، یک رشته را جستجو و یک بولین را بر می گرداند. اگر رشته حاوی کلمه مشخص شده باشد، true و در غیر این صورت false را بر می گرداند.

این متد دو پارامتر دریافت می کند.

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

نکته: مقدار برگشتی متد includes، یک بولین است.

let text = "for web development need JS, JS very important! js is simple";
document.getElementById("demo").innerHTML = text.includes("JS");

نکته: متد includes، حساس به حروف بزرگ و کوچک است.

let text = "for web development need JS, JS very important! js is simple";
document.getElementById("demo").innerHTML = text.includes("JS", 30);
text = "for web development need JS, JS very important! js is simple";
document.getElementById("demo").innerHTML = text.includes("js", 30);

متد startsWith() در JS

متد startsWith() ابتدای یک رشته را جستجو و یک بولین بر می گرداند. اگر رشته با کلمه مشخص شده شروع شده بود، true در غیر این صورت false بر می گرداند.

این متد دو پارامتر دریافت می کند.

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

نکته: مقدار برگشتی متد startsWith، یک بولین است. 

let text = "for web development need JS, JS very important! js is simple";
document.getElementById("demo").innerHTML = text.startsWith("for");
let text = "for web development need JS, JS very important! js is simple";
document.getElementById("demo").innerHTML = text.startsWith("JS");
let text = "for web development need JS, JS very important! js is simple";
document.getElementById("demo").innerHTML = text.startsWith("web", 4);
let text = "for web development need JS, JS very important! js is simple";
document.getElementById("demo").innerHTML = text.startsWith("web", 6);

نکته: متد startsWith، حساس به حروف بزرگ و کوچک است.

متد endsWith() در JS

متد endsWith() انتهای یک رشته را جستجو و یک بولین بر می گرداند. اگر رشته با کلمه مشخص شده پایان داده شده بود، true در غیر این صورت false بر می گرداند.

این متد دو پارامتر دریافت می کند.

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

نکته: مقدار برگشتی متد endsWith، یک بولین است. 

let text = "for web development need JS, JS very important! js is simple";
document.getElementById("demo").innerHTML = text.endsWith("simple");
let text = "for web development need JS, JS very important! js is simple";
document.getElementById("demo").innerHTML = text.endsWith("web", 7);

نکته: متد endsWith، حساس به حروف بزرگ و کوچک است.

خلاصه درس

در این فصل با موارد زیر آشنا شدیم:

  • متد indexOf()
  • متد lastIndexOf()
  • متد search()
  • متد match()
  • متد matchAll()
  • متد includes()
  • متد startsWith()
  • متد endsWith()

توسعه دهندگان
محمدرضا کرمی