مقایسه رشته ها

می توان رشته ها را به روش های مختلف با هم مقایسه کرد. به عنوان مثال با استفاده از عملگر == می توان تست کرد که آیا دو رشته با هم برابرند یا نه.

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 را بر می گرداند.