متد indexOf در جاوا
متد indexOf برای پیدا کردن مکان یک کاراکتر یا رشته درون یک رشته دیگر استفاده می شود. برای مثال می توانید از آن برای چک کردن وجود کاراکتر @ در آدرس ایمیل استفاده کنید. این مثال را با کد پیاده سازی می کنیم:
کد زیر را در نظر بگیرید:
می خواهیم بررسی کنیم که “@” در آدرس ایمیل هست یا نه، پس در ابتدا یک متغیر از جنس char، ایجاد کرده و به آن مقدار ‘@’ می دهیم. سپس یک رشته ایجاد می کنیم و یک آدرس ایمیل را برای امتحان درون آن می ریزیم. سپس یک متغیر از نوع int به نام result برای ذخیره نتیجه ایجاد می کنیم. به این دلیل این متغیر از نوع int است که خروجی متد indexOf یک عدد است که مکان کاراکتر مورد نظر ما درون یک رشته را مشخص می کند. در این مثال ما به دنبال مکان کاراکتر “@” در رشته email_address هستیم. کد زیر همین کار را برای ما انجام می دهد:
result = email_address.indexOf( ampersand );
رشته ای که قصد جستجو درون آن را داریم را در ابتدا نوشته و بعد از “.”، نام متد(indexOf) را می نویسیم. درون پرانتز روبروی متد هم می توانیم نام متغیر کاراکتری را بنویسیم یا به صورت مستقیم خود کاراکتر را بنویسیم(بدین صورت: “@”). در این مثال ما متغیر ampersand که دارای مقدار @ است را به عنوان ورودی به متد داده ایم. جاوا مکان کاراکتر “@” را بر می گرداند و در متغیر result دخیره می کند. بعد از اجرای کد در خروجی می بینید که عدد ۴ چاپ می شود. شاید فکر کنید که خروجی متد اشتباه است ولی چون این متد شمردن را از عدد ۰ شروع می کند نتیجه درست است. اگر کاراکتری که به دنبال آن هستید درون رشته وجود نداشته باشد، این متد عدد ۱- را بر می گرداند. برای امتحان این مورد، کاراکتر “@” را از آدرس ایمیلی که در کد نوشته شده پاک کنید و خروجی را مشاهده کنید. از این خروجی می توانیم به صورت زیر استفاده کنیم:
بنابر این اگر خروجی indexOf، عدد “۱-” باشد، می توانیم پیغام خطا نشان دهیم و در غیر این صورت به کاربر اجازه می دهیم تا ادامه دهد. از این متد می توانیم برای امتحان بیش از یک کاراکتر هم استفاده کنیم. کد زیر آدرس ایمیل را بررسی می کند تا ببیند با “com.” به پایان می رسد یا خیر:
کد نوشته شده تقریبا با کد قبلی یکسان است با این تفاوت که ما این بار از یک متغیر String برای نگه داشتن متنی که می خواهیم بررسی کنیم استفاده می کنیم. نه یک متغیر char
همچنان اگر متن مورد نظرکه به عنوان ورودی به متد indexOf می دهیم درون رشته یافت نشود، خروجی این متد، ۱- خواهد بود. و اگر متن مورد نظر درون رشته یافت شود خروجی متد محل اولین کاراکتر یافت شده در رشته خواهد بود. در مثال بالا کاراکتر “.”، هفتمین کاراکتر رشته email_address است.(با شروع شمارش از ۰)
همچنین می توانیم محل شروع جست و جو را تعیین کنیم! مثلا در مثال بالا می توانیم جستجوی “com.” را از بعد کاراکتر “@” شروع کنیم:
تفاوت این کد با کد قبل این است که این بار مکان کاراکتر “@” را پیدا کردیم و به عنوان ورودی دوم به متد indexOf داده ایم تا جست و جو را از آن مکان به بعد آغاز کند.
در صورتی که این تابع تنها یک ورودی داشته باشد، به صورت پیشفرض جستجو را از کاراکتر ۰ ام آغاز می کند.
Ends With … Start With
برای برنامه بالا می توانید از متد endsWith هم استفاده کنید. این متد همان طور که از اسمش مشخص است در صورتی که رشته ای که روی آن عملیات را انجام می دهد به رشته ای که در ورودی می گیرد ختم شود، نتیجه true خواهد داشت و در غیر این صورت false بر می گرداند. یعنی خروجی این تابع از نوع Boolean است.
Boolean ending = email_address.endsWith(dotcom); if (ending == false){ System.out.println("Invalid Email Address"); }else{ System.out.println("Email Address OK"); }
متد startsWith، بر خلاف endsWith، در صورتی که رشته مورد نظر با رشته ورودی آغاز شود مقدار صحیح بر می گرداند.
در مطلب بعدی متد substring را بررسی خواهیم کرد.
سلام
خسته نباشید
ممنون بابت دانشی که به اشتراک میذارید
نمیخواهید ادامه بدید؟
خیلی خوب توضیح میدید و مثال هاتون کاربردیه
متاسفانه این روزها مشغله کاری مانع از نوشتن ادامه مطالب شده بود.
ممنون بابت نظرتون. سعی می کنم حتما هفته ای دو مطلب در ادامه این سری بنویسم.