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

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

string str1 = "Hello";
string str2 = "Hello";
string str3 = "Goodbye";

Console.WriteLine("str1 == str2 : {0}", str1 == str2);
Console.WriteLine("str1 == str3 : {0}", str1 == str3);
str1 == str2 : True
str1 == str3 : False

همچنین از متد استاتیک String.Compare هم برای مقایسه دو رشته استفاده می‌شود. به کد زیر توجه کنید :

if (String.Compare(str1, str2) == 0)
{
   Console.WriteLine("str1 is equal to str2");
}

متد ()String.Compare دو رشته را قبول می‌کند و اگر با هم برابر باشند مقدار 0، اگر مقدار اولین رشته از دومین رشته بیشتر باشد مقدار 1 و اگر مقدار اولین رشته از دومین رشته کوچکتر باشد مقدار 1- را بر می‌گرداند. بنابراین برای تشخیص تساوی دو رشته با استفاده از متد ()Compare باید مانند کد بالا تست کنید که آیا مقدار برگشتی برابر صفر است یا نه. چطور تشخیص بدهیم که یک رشته از رشته دیگر کوچکتر یا بزرگتر است؟ هر کاراکتر در رشته به یونیکد معادل خود تبدیل می‌شود. اولین کاراکتر اولین رشته با اولین کاراکتر دومین رشته مقایسه می‌شود. اگر برابر بودند سپس دومین کارکترها و به همین ترتیب بقیه کاراکترها با هم مقایسه می‌شوند. سربارگذاری دیگر این متد یک آرگومان سومی دیگر از نوع بولی قبول می‌کند و به وسیله آن تشخیص می‌دهد که آیا در مقایسه دو رشته بزرگی و کوچکی حروف در نظر گرفته شده است یا نه (دو رشته از لحاظ بزرگی و کوچکی حروف با هم برابرند یا نه.) در حالت پیش فرض متد ()String.Compare دو رشته یکسان را که فقط در بزرگی و کوچکی حروف با هم متفاوت باشند را دو رشته متفاوت در نظر می‌گیرد. کد زیر نشان می‌دهد که چطور می‌توان دو رشته را بدون در نظر گرفتن بزرگی و کوچکی حروف با هم مقایسه کرد:

string str1 = "Microsoft";
string str2 = "microsoft";

if (String.Compare(str1, str2, true) == 0)
{
   Console.WriteLine("The strings are equal.");
}
The strings are equal.

در زیر چندین سربارگذاری از متد ()String.Compare بیان شده است :

متد توضیح
Compare(String, String) دو رشته را با هم مقایسه می‌کند.
Compare(String, String, Boolean) دو رشته را بدون در نظر گرفتن بزرگی و کوچکی حروفشان مقایسه می‌کند.
Compare(String, Int32, String, Int32, Int32) زیر رشته‌های دو رشته رشته را با هم مقایسه می‌کند.
Compare(String, Int32, String, Int32, Int32, Boolean) زیر رشته‌های دو رشته را بدون در نظر گرفتن بزرگی و کوچکی حروفشان مقایسه می‌کند.

یکی دیگر از روشهای مقایسه دو رشته استفاده از متد ()CompareTo است. به نحوه استفاده از این متد توجه کنید :

string str1 = "Hello";
string str2 = "Hello";

if (str1.CompareTo(str2) == 0)
{
   Console.WriteLine("The strings are equal.");
}
The strings are equal.

متد ()CompareTo یک مقدار صحیح را بر می‌گرداند. مانند متد ()Compare این متد نیز اگر رشته‌ها با هم برابر باشند مقدار 0، اگر مقدار اولین رشته از دومین رشته بیشتر باشد مقدار 1 و اگر مقدار اولین رشته از دومین رشته کوچکتر باشد مقدار 1- را بر می‌گرداند.