JavaScript جستجو در رشته های
چهار مدل تابع برای جستجو در جاوااسکریپت وجود دارد:
indexOf()
lastIndexOf()
startsWith()
endsWith()
indexOf تابع
- این تابع رشته یا کاراکتر به عنوان ورودی میگیرد و در رشته اصلی موردنظر آن را جستجو میکند و درنهایت موقعیت ورودی دریافتیش را در رشته موردنظر به صورت عددی چاپ میکند (منظور از موقعیت درواقع شماره جایگاه اولین کاراکتر مربوط به رشته است). دقت کنید که شمارش از صفر شروع میشود.
- این تابع میتواند یک مقدار عددی هم به عنوان ورودی دوم دریافت کند ((3,”world”)str.indexOf) و مبدا یافتن پوزیشن رشته مورد جستجو را همان عدد ورودی قرار دهد یعنی در حالت مذکور از از کاراکتر سوم به بعد شروع به شمارش میکند و کاراکتر سوم را جایگاه مبدا درنظر میگیرد.
<html> <body> <p id=“demo”></p>
<script> let str = “Hello world!”; document.getElementById(“demo”).innerHTML = str.indexOf(“world”); //The result is: 6
</script>
</body> </html>
lastIndexOf تابع
-
- این تابع رشته یا کاراکتر را به عنوان ورودی برای جستجو در یک رشته دریافت میکند و جایگاه آخرین کاراکتر از رشته مورد جستجو را به صورت عددی چاپ میکند.
<html> <body> <p id=“demo”></p>
<script> let str = “Hello world!”; document.getElementById(“demo”).innerHTML = str.lastIndexOf(“world”); //The result is: 10 </script>
</body> </html>
- درصورت وجود نداشتن ورودی موردجستجو در رشته هر دو تابع indexOf و lastIndexOf مقدار 1- را برمیگردانند.
search تابع
- عملکرد این تابع مانند تابع ()indexOf است با این تفاوت که امکان قرار دادن عدد به عنوان ورودی دوم برای تعیین مبدا شمارش وجود ندارد.
- این تابع برخلاف تابع ()indexOf دارای خاصیت جستجوی پیشرفته است.
<html> <body> <p id=“demo”></p> <script> let str = “hello world!”; document.getElementById(“demo”).innerHTML = str.search(“world”) </script> </body> </html>
match تابع
- این تابع عبارت مورد جستجو را درون رشته موردنظر پیدا میکند و هرچند بار که عبارت تکرار شده باشد آن را به صورت یک مجموعه آرایه ای نمایش میدهد.
- این تابع نیز به حروف کوچک و بزرگ حساس است.
- استفاده از g/ داخل تابع باعث میشود تمام عبارات یافت شده را نمایش دهد و اگر از g/ استفاده نکنید حتی اگر چندین بار هم عبارت مورد جستجو تکرار شده باشد اما فقط یکبار آن را چاپ میکند.
- اگر هم از gi/ داخل تابع استفاده کنید علاوه بر چاپ عبارت مورد جستجو به تعداد دفعات تکرار آن، حساسیت نسبت به کوچک و بزرگ بودن حروف نیز از بین میرود.
<html> <body> <p id=“demo”></p> <script> let text = “hello world hello every body Hello guys”; document.getElementById(“demo”).innerHTML = text.match(/hel/g); //The result is: hel, hel
let text = “hello world hello every body Hello guys”; document.getElementById(“demo”).innerHTML = text.match(/hel/gi); //The result is: hel, hel, Hel </script> </body> </html>
includes تابع
- این تابع عبارت مورد نظر را جستجو میکند اگر در رشته وجود داشته باشد مقدار true در غیر اینصورت مقدار false را برمیگرداند.
- این تابع به نیز برای جستجوی عبارت به حروف کوچک و بزرگ حساس است.
<html> <body> <p id=“demo”></p> <script> let text = “Hello world, welcome to the universe.”; document.getElementById(“demo”).innerHTML = text.includes(“world”); //The result is: true </script> </body> </html>
برای تابع includes نیز میتوانیم یک عدد به عنوان ورودی دوم تابع جهت تعیین جایگاه مبدا برای شروع جستجو درنظر بگیریم. در مثال زیر بجای اینکه از کاراکتر صفرم شروع به جستجو کند از کاراکتر سوم شروع کرده و کاراکتر سوم را مبدا یعنی با جایگاه صفر درنظر میگیرد.
document.getElementById(“demo”).innerHTML = text.includes(“world”, 3);
startsWith
- این تابع به جستجوی عبارت مورد جستجو در ابتدای رشته موردنظر میپردازد، اگر عبارت در شروع رشته وجود داشته باشد مقدار true و درغیر اینصورت مقدار false را برمیگرداند.
- دقت کنید که این تابع نیز به حروف کوچک و بزرگ حساس است.
- در این تابع نیز میتوان با قرار دادن مقدار عددی به عنوان ورودی دوم تابع، مبدا جستجو را مشخص کرد که در اینصورت اگر عبارت موردنظر در مبدا مشخص شده وجود داشته باشد مقدار true را برمیگرداند.
<html> <body> <p id=“demo1”></p> <p id=“demo2”></p> <script> let text = “hello world, welcome to the universe.”; document.getElementById(“demo1”).innerHTML = text.startsWith(“hello”);
document.getElementById(“demo2”).innerHTML = text.startsWith(“world”,6); </script> </body> </html>
endsWith تابع
- این تابع به جستجوی عبارت مورد جستجو در انتهای رشته موردنظر میپردازد، اگر عبارت در انتهای رشته وجود داشته باشد مقدار true و درغیر اینصورت مقدار false را برمیگرداند.
- دقت کنید که این تابع نیز به حروف کوچک و بزرگ حساس است.
- در این تابع نیز میتوان با قرار دادن مقدار عددی به عنوان ورودی دوم تابع، مبدا جستجو را مشخص کرد که در اینصورت اگر عبارت موردنظر در مبدا مشخص شده وجود داشته باشد مقدار true را برمیگرداند.
<html> <body> <p id=“demo1”></p> <p id=“demo2”></p> <script> let text = “hello world!”; document.getElementById(“demo1”).innerHTML = text.endsWith(“world!”); //The result is: true
document.getElementById(“demo2”).innerHTML = text.endsWith(“world!”, 1); //The result is: false </script> </body> </html>