String.Compare()
是 C# 中用于比较两个字符串的方法。它可以用于按照字典序比较两个字符串的大小,或者判断两个字符串是否相等。该方法有多个重载版本,因此它可以进行各种形式的字符串比较。
使用方法
String.Compare()
有三种常用的重载版本,每一种都接受两个字符串作为参数,并返回一个表示两个字符串相对大小的整数。以下是三个常用版本的详细说明:
第一种重载
该重载接受两个字符串作为参数,并返回一个整数。如果返回值是零,则表示两个字符串相等;如果返回值是负数,则表示第一个字符串小于第二个字符串;如果返回值是正数,则表示第一个字符串大于第二个字符串。
string str1 = "hello";
string str2 = "world";
int result = String.Compare(str1, str2);
if (result < 0)
{
Console.WriteLine("str1 is less than str2");
}
else if (result == 0)
{
Console.WriteLine("str1 is equal to str2");
}
else
{
Console.WriteLine("str1 is greater than str2");
}
上面的代码会打印出“str1 is less than str2”,因为“hello”在字典序中小于“world”。
第二种重载
该重载接受两个字符串和一个 bool
型参数作为输入,并返回一个整数。如果 bool
参数为 true
,则表示比较时忽略大小写;否则,大小写会影响比较结果。
string str1 = "Hello";
string str2 = "hello";
int result = String.Compare(str1, str2, true);
if (result < 0)
{
Console.WriteLine("str1 is less than str2");
}
else if (result == 0)
{
Console.WriteLine("str1 is equal to str2");
}
else
{
Console.WriteLine("str1 is greater than str2");
}
上面的代码会打印出“str1 is equal to str2”,因为使用了 true
参数,忽略了大小写。
第三种重载
该重载接受两个字符串、一个 bool
型参数和一个 CultureInfo
对象作为输入,并返回一个整数。通过 CultureInfo
参数,该方法可以使用特定的区域设置规则来比较字符串。
string str1 = "ångström";
string str2 = "angstrom";
CultureInfo swedishCulture = new CultureInfo("sv-SE");
int result = String.Compare(str1, str2, false, swedishCulture);
if (result < 0)
{
Console.WriteLine("str1 is less than str2");
}
else if (result == 0)
{
Console.WriteLine("str1 is equal to str2");
}
else
{
Console.WriteLine("str1 is greater than str2");
}
上面的代码会打印出“str1 is greater than str2”,因为在瑞典文化中,“å”被认为是大于“a”的。
实例说明
实例一
假设我们需要检查用户输入的密码是否正确。以下代码展示了如何使用 String.Compare()
方法来比较用户输入的密码和正确的密码是否相等:
string correctPassword = "myPassword";
string userPassword = "mypassword";
if (String.Compare(userPassword, correctPassword, true) == 0)
{
Console.WriteLine("Password is correct.");
}
else
{
Console.WriteLine("Incorrect password.");
}
该代码中,忽略了大小写,因此只要用户输入的密码“mypassword”在字典序中等于正确的密码“myPassword”,就会被认为是正确的。
实例二
假设我们需要对一组字符串进行排序,并且我们希望按照瑞典文化的顺序排序这些字符串。以下代码展示了如何使用 String.Compare()
方法来对字符串数组进行排序:
string[] words = { "äs", "arbete", "åker", "åsna", "ämne", "Affär" };
CultureInfo swedishCulture = new CultureInfo("sv-SE");
Array.Sort(words, (x, y) => String.Compare(x, y, true, swedishCulture));
foreach (string word in words)
{
Console.WriteLine(word);
}
该代码中,通过传递瑞典文化作为参数,String.Compare()
方法可以按照瑞典文化的规则来比较这些字符串,并将它们排序输出。