سلام. روزت به خیر. دوست عزیز متد () indexOf برای پیدا کردن ایندکس(index) یک کاراکتر خاص یا زیر رشته ای (substring) از یک رشته(String) مشخص در جاوا کاربرد دارد.
ایندکس(index) چیست؟ به شماره خانه های کاراکترهای موجود در یک String ایندکس(index) میگویند.
مثال: ایندکس های رشته "String str = "javalike به صورت زیر است:
• مثلا ایندکس کاراکتر 'j' برابر 0 و ایندکس کاراکتر'e' برابر 7 است.
متد ()indexOf با چهار پارامتر مختلف در کلاس String وجود دارد:
int indexOf(int ch)
ایندکس(index) اولین کاراکتر ch موجود در یک String را برمی گرداند.
• در برنامه بالا قصد داریم که شماره ایندکس کاراکتر 'a' را در رشته "str = "javalike پیدا کنیم.برای این کار از متد indexOf(int ch) استفاده کرده ایم.با وجود این که کاراکتر 'a' در دو ایندکس متفاوت از رشته "javalike" قرار گرفته است، یعنی هم در ایندکس شماره 0 و هم در ایندکس شماره 3 در رشته "javalike" کاراکتر 'a' موجود است، اما متد indexOf(int ch)، ایندکس شماره 1 را به ما داد.چرا؟ زیرا متد indexOf(int ch) ایندکس(index) اولین کاراکتر ch موجود در یک String را برمی گرداند.
نکته:در متد indexOf(int ch) اگر کاراکتر ch در یک String پیدا نشد، این متد مقدار -1 را برای ما برمی گرداند.
• به دلیل این که کاراکتر 'D' در رشته "javalike" وجود نداشت، متد indexOf مقدار -1 را به عنوان خروجی به ما پس داد.
int indexOf(intch, intfromindex)
این متد چکار میکنید؟! این متد ایندکس اولین کاراکتر ch موجود در یک String را برمی گرداند. پارامتر fromindex چه نقشی برعهده دارد؟ نقطه شروع بررسی کاراکترهای String برای پیدا کردن ایندکس کاراکتر ch از خانه(ایندکس) fromindex رشته(String) است. براتون مثال میزنم که این توضیح رو متوجه بشید.
• در مثال بالا متد indexOf شماره ایندکس اولین کاراکتر 'a' موجود در رشته "javalike" را برای ما به دست آورد.یعنی متد indexOf شماره ایندکس کاراکتر 'a' موجود در رشته "javalike" که بعد از حرف 'j' و قبل از حرف 'v' قرار داشت را برای ما برگرداند.
• حالا ما قصد داریم که شماره کاراکتر 'a' که بعد از حرف 'v' و قبل از حرف 'l' در رشته "javalike" قرار دارد را به دست آوریم. برای این کار ما باید به خانم!!! indexOf بگیم از یک نقطه مشخصی که ما برات تعیین میکنیم شروع به پیدا کردن ایندکس کاراکتر مورد نظر ما که در اینجا کاراکتر 'a' که بعد از حرف 'v' و قبل از حرف 'l' قرار دارد، کن.
• ابتدا باید از متد indexOf(int ch, int fromindex) استفاده کنیم. به جای پارامتر ch کاراکتر مورد نظر که در اینجا کاراکتر ما 'a' است و به جای پارامتر fromindex نقطه(ایندکس) شروع بررسی کاراکتر به کاراکتر رشته مورد نظر که در اینجا "javalike" است را قرا میدهیم.
Example:
• در مثال بالا ما ایندکس کاراکتر 'a' را از خانه شماره 2 یعنی از کاراکتر 'v' رشته "javalike" شروع به بررسی و پیدا کردن، کردیم.چرا؟ چون هدف ما به دست آورن ایندکس کاراکتر 'a' بعد از کاراکتر 'v' و قبل از کاراکتر 'l' که در رشته "javalike" قرار داشت، بود.
• دستور str.indexOf('a', 2) کاراکتر 'a' را از ایندکس شماره 2 رشته "javalike" بررسی کرده، و در صورت وجود داشتن، ایندکس آن را به ما برمی گرداند.به عبارتی دیگر هنگام بررسی کاراکترهای 'j ' ,'a' که ابتدای رشته "javalike" قرار داشتند را نادیده گرفته است.
• به زبان ساده براتون بگم؟! معنی دستور str.indexOf('a', 2) اینه که، میگه ایندکس کاراکتر 'a' رو از کاراکتر 2 به بعد رشته str بررسی و پیدا کن.
نتیجه کلی:در کل اگر قصد داریم از نقطه خاصی(fromindex) از یک String شروع به پیدا کردن ایندکس کاراکتر مورد نظر(ch) خود کنیم از متد زیر استفاده میکنیم.
int indexOf(int ch, int fromindex)
متد بعدی.........
int indexOf(String str):
• ایندکس رشته str را در یک String مشخص برمی گرداند.
نکته: برخی مباحث هستند که توضیح دادنشون بیشتر آدمو رو برای یادگیری گیج میکنه، به همین خاطر بهتره با مثال های متعدد مفهوم اون مبحث رو یاد بگیریم.
Example:
package javalike;
public class Test4 {
public static void main(String[] args) {
String a = "javalike";
String str="like";
System.out.println(a.indexOf(str));
}
}
خروجی(output):
4
• در مثال بالا رشته "like" در ایندکس شماره 4 رشته "javalike" قرار داشت. به همین خاطر دستور a.indexOf(str) مقدار 4 را برای ما برگرداند.
• در مثال بالا رشته "java" در خانه (ایندکس) شماره 0 رشته a قرار دارد.
• در مثال بالا رشته "like" در خانه (ایندکس) شماره 5 رشته a قرار دارد.
• در مثال بالا رشته "free" در خانه (ایندکس) شماره 10 رشته a قرار دارد.
• در مثال بالا رشته "like free" در خانه (ایندکس) شماره 5 رشته a قرار دارد.
• در مثال بالا رشته "java like" در خانه (ایندکس) شماره 0 رشته a قرار دارد.
• در مثال بالا رشته "ke" در خانه (ایندکس) شماره 7 رشته a قرار دارد.
نکته: شماره ایندکس اولین کاراکتر رشته str در یک String مشخص، تعیین کننده ایندکس رشته str است. مثلا: در مثال بالا رشته str3 = "free"; در رشته "a = "java like free موجود است. شماره ایندکس کاراکتر 'f' رشته "free" در رشته "java like free" برابر 10 است، پس شماره ایندکس رشته "free" در رشته "java like free" نیز برابر 10 است.
متد بعدی.........
int indexOf(String str, intfromindex)
• این متد برای پیدا کردن ایندکس رشته str از ایندکس fromindex شروع به بررسی String مورد نظر میکند. به عبارتی دیگر اولین رشته str بعد از ایندکس fromindex رشته مورد نظر را پیدا میکند.
Example:
package javalike;
public class Test4 {
public static void main(String[] args) {
String a = "java like free java";
String str1 = "java";
System.out.println(a.indexOf(str1, 3));
}
}
خروجی(output):
15
توضیحات:
System.out.println(a.indexOf(str1, 3));
• در دستور بالا گفته شده است ایندکس رشته str1 را از ایندکس سوم به بعد رشته a بررسی کن و در صورت موجود بودن برای ما برگردان.
• با وجود این که رشته "java" را در ابتدای رشته a داریم یعنی در ایندکس شماره 0 اما به دلیل این که به متد indexOf(str1, 3) گفتیم ایندکس های سوم به بعد رشته a رو بررسی کن، ایندکس های 0 تا 2 رشته a نادیده گرفته میشوند و متد indexOf از ایندکس سوم به بعد میگرده و ایندکس رشته str1 را در رشته a پیدا میکند.
نکته: همه چهار متد مختلف indexOf در صورت پیدا نکردن کاراکتر یا String مورد نظر در یک String مشخص مقدار
-1 را برای ما برمیگردانند.
Example:
package javalike; public class indexOfExample { public static void main(String args[]) {
String str1 = new String("This is a javalike tutorial");
String str2 = new String("java");
String str3 = new String("like");
String str4 = new String("likes");
System.out.println("index of j in str1: " + str1.indexOf('j'));
System.out.println("index of j in str1 after 10th char:"
+ str1.indexOf('i', 10));
System.out.println("index of j in str1 after 30th char:"
+ str1.indexOf('j', 30));
System.out
. print ln("index of string str2 in str1:" + str1.indexOf(str2));
System.out.println("index of str2 after 15th char:"
+ str1.indexOf(str2, 15));
System.out.println("index of string str3:" + str1.indexOf(str3));
System.out.println("index of string str4:" + str1.indexOf(str4));
System.out.println("index of harcoded string:" + str1.indexOf("is"));
System.out.println("index of hardcoded string after 4th char:"
+ str1.indexOf("is", 4));
}
}
خروجی(output):
index of j in str1: 10
index of j in str1 after 10th char:15
index of j in str1 after 30th char:-1
index of string str2 in str1:10
index of str2 after 15th char:-1
index of string str3:14
index of string str4:-1
index of harcoded string:2
index of hardcoded string after 4th char:5
پیروز و موفق باشید
این جلسه آموزشی را میتوانید بصورت کتاب الکترونیکی (PDF شده) در لینک زیر دریافت کنید.
این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)