مقایسه رشته ها
می توان رشته ها را به روش های مختلف با هم مقایسه کرد. به عنوان مثال با استفاده از عملگر == می توان تست کرد که آیا دو رشته با هم برابرند یا نه.
String str1 = "Hello"; String str2 = "Hello"; String str3 = "Goodbye"; System.out.println(MessageFormat.format("str1 == str2 : {0}", str1 == str2)); System.out.println(MessageFormat.format("str1 == str3 : {0}", str1 == str3));
str1 == str2 : True str1 == str3 : False
همچنین از متد ()compareTo هم برای مقایسه دو رشته استفاده می شود. به کد زیر توجه کنید :
String str1 = "Hello"; String str2 = "Hello"; System.out.println(str1.compareTo(str2));
0
متد ()compareTo یک رشته را می گیرد و آن را با رشته مورد نظر ما مقایسه می کند و در صورت مساوی بودن هر دو مقدار صفر را بر می گرداند.بنابراین برای تشخیص تساوی دو رشته با استفاده از متد ()compareTo باید مانند کد زیر تست کنید که آیا مقدار برگشتی برابر صفر است یا نه :
if(str1.compareTo(str2) == 0) { // some code }
چطور تشخیص بدهیم که یک رشته از رشته دیگر کوچکتر یا بزرگتر است؟ هر کاراکتر در رشته به یونیکد معادل خود تبدیل می شود. اولین کاراکتر اولین رشته با اولین کاراکتر دومین رشته مقایسه می شود.اگر برابر بودند سپس دومین کارکترها و به همین ترتیب بقیه کاراکترها با هم مقایسه می شوند. متد ()compareTo دو رشته یکسان را که فقط در بزرگی و کوچکی حروف با هم متفاوت باشند را دو رشته متفاوت در نظر می گیرد. برای مقایسه دو رشته بدون در نظر گرفتن بزرگی و کوچکی حروف از متد ()compareToIgnoreCase استفاده می شود :
String str1 = "HELLO"; String str2 = "Hello"; System.out.println(str1.compareToIgnoreCase(str2));
0
همانطور که مشاهده می کنید با وجودیکه رشته اول با حروف بزرگ نوشته شده است ولی متد ()compareToIgnoreCase باز هم مقدار صفر را بر می گرداند که نشان دهنده مساوی بودن دو رشته است. یکی دیگر از متدهای مقایسه رشته ها متد ()equals است که در صورت مساوی بودن دو رشته مقدار true را بر می گرداند :
String str1 = "Hello"; String str2 = "Hello"; System.out.println(str1.equals(str2));
true
متد ()equalsIgnoreCase هم دو رشته را بدون در نظر گرفتن کوچکی و بزرگی حروف با هم مقایسه و مقدار true یا false را بر می گرداند.
ممنون مشکلم حل شد هرکاری کردم با استفاده از دو مساوی هرکاری کردم انگار ide نمیتونست تشخیصشون بده و همش false بر میگردوند
با استفاده از متد CompareTo که شما گذاشتید حل شد
سپاااس
سلام مقایسه دو رشته بوسیله دو مساوی رو نمی دونستم کتاب جاوای ۸ آقایان دوگ و شیلد رو هم نگاه کردم مقایسه دو رشته بوسیله دو مساوی رو صحیح نمی دونن. از طرفی استفاده از {} در فرمت هم برام جدید بود خواهش میکنم در صورت امکان بیشتر توضیح دهید. سپاسگزارم
سلام، درسته، بشتر از متدها برای مقایسه رشته ها استفاده میشه در مورد {} هم لینک زیر رو ببینید کامل متوجه میشین
http://www.w3-farsi.com/%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D9%85%D8%AA%D8%BA%DB%8C%D8%B1%D9%87%D8%A7-2/