C# String.Compare()方法: 比较两个指定的字符串并返回它们之间的关系

  • Post category:C#

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() 方法可以按照瑞典文化的规则来比较这些字符串,并将它们排序输出。