جستجوی رشته (String Search)
اینجا روش های جستجوی رشته را یاد می گیری. «رشته (String)» متن است. با این متدها می فهمیم کجا پیدا می شود، چندبار هست، و از کجا شروع کنیم. سپس فرق هر متد را کوتاه می گوییم.
indexOf و آخرین موقعیت
متد indexOf() اولین موقعیت را می دهد. اگر نبود، -1 می دهد.
let text = "Please locate where 'locate' occurs!";
let index = text.indexOf("locate");
متد lastIndexOf() آخرین موقعیت را می دهد.
let text = "Please locate where 'locate' occurs!";
let last = text.lastIndexOf("locate");
اگر پیدا نشود، -1 برمی گردد.
let text = "Please locate where 'locate' occurs!";
let notFound = text.lastIndexOf("John");
می توانی موقعیت شروع جستجو را بدهی.
let text = "Please locate where 'locate' occurs!";
let fromPos = text.indexOf("locate", 15);
در lastIndexOf() جستجو رو به عقب است.
let text = "Please locate where 'locate' occurs!";
let back = text.lastIndexOf("locate", 15);
search و تفاوت با indexOf
متد search() با رشته یا «عبارت منظم (RegExp)» جستجو می کند.
let text = "Please locate where 'locate' occurs!";
let pos1 = text.search("locate");
let text = "Please locate where 'locate' occurs!";
let pos2 = text.search(/locate/);
تفاوت مهم: search() شروع دلخواه نمی گیرد، اما RegExp می گیرد. indexOf() برعکس است.
match و matchAll
match() نتیجه تطبیق را به آرایه می دهد. بدون g فقط اولین را می دهد.
let text = "The rain in SPAIN stays mainly in the plain";
let r1 = text.match("ain");
let r2 = text.match(/ain/);
let r3 = text.match(/ain/g);
let r4 = text.match(/ain/gi);
matchAll() یک «تکرارگر (Iterator)» از همه تطبیق ها می دهد. با RegExp باید g داشته باشد.
let text = "Cats and cats and CATS";
let it1 = text.matchAll("Cats");
let it2 = text.matchAll(/Cats/g);
let it3 = text.matchAll(/Cats/gi);
includes، startsWith، endsWith
includes() می گوید یک بخش در رشته هست یا نه.
let text = "Hello world, welcome to the universe.";
let a = text.includes("world");
let b = text.includes("world", 12);
startsWith() شروع رشته را چک می کند.
let text = "Hello world, welcome to the universe.";
let s1 = text.startsWith("Hello");
let s2 = text.startsWith("world");
let s3 = text.startsWith("world", 6);
endsWith() انتهای رشته را چک می کند.
let text = "John Doe";
let e1 = text.endsWith("Doe");
let e2 = "Hello world, welcome to the universe.".endsWith("world", 11);
گام های تمرین
- در یک جمله، اولین "in" را پیدا کن.
- تعداد همه "in" را با
matchبشمار. - بررسی کن جمله با "Hello" شروع می شود یا نه.
نکته: آموزش کامل رشته ها را در رشته ها (Strings) و ابزارها را در متدهای رشته دنبال کن.
جمع بندی سریع
indexOfوlastIndexOfموقعیت می دهند.searchبا RegExp کار می کند.matchآرایه می دهد؛matchAllتکرارگر.includestrue/false برمی گرداند.startsWithوendsWithشروع و پایان را چک می کنند.