导出 (0) 打印
全部展开
此文章由机器翻译。 将光标移到文章的句子上,以查看原文。 更多信息。
译文
原文

String.Compare 方法 (String, String)

比较两个指定的 String 对象,并返回一个指示二者在排序顺序中的相对位置的整数。

命名空间:  System
程序集:  mscorlib(在 mscorlib.dll 中)

public static int Compare(
	string strA,
	string strB
)

参数

strA
类型:System.String
要比较的第一个字符串。
strB
类型:System.String
要比较的第二个字符串。

返回值

类型:System.Int32
一个 32 位带符号整数,指示两个比较数之间的词法关系。

条件

小于零

strA 小于 strB

strA 等于 strB

大于零

strA 大于 strB

该比较使用当前区域性获取区域性特定的信息,例如大小写规则和各个字符的字母顺序。 例如,区域性可以指定将某些字符的组合视为单个字符,或者用特殊方法比较大写和小写字符,或者字符的排序顺序取决于它前面或后面的字符。

使用字排序规则执行比较。 有关字、字符串和顺序排序的更多信息,请参见 System.Globalization.CompareOptions

警告说明警告

比较字符串时,您应该调用 Compare(String, String, StringComparison) 方法,这需要您显式指定该方法使用的字符串比较的类型。 有关详细信息,请参阅在 .NET Framework 中使用字符串的最佳做法

一个或者两个比较字都可以是 null 根据定义,任何字符串(包括空字符串 (""))的比较结果都大于 null 引用;两个 null 引用的比较结果为相等。

当发现不相等或已经比较了两个字符串时,比较就会终止。 但是,如果两个字符串一直比较到其中一个字符串的末尾时仍相同,而另一个字符串仍有剩余字符,则认为仍有剩余字符的字符串较大。 返回值为执行最后一次比较所得的结果。

当比较受区域性特定的大小写规则影响时,可能会发生意外结果。 例如,在土耳其语中,下面的示例将产生错误结果,因为土耳其语的文件系统不会对“file”中的字母“i”使用语义大小写规则。


static bool IsFileURI(String path)
{
    return (String.Compare(path, 0, "file:", 0, 5, true) == 0);
}


使用序号比较比较路径名与"file"。 执行此操作的正确代码如下:


static bool IsFileURI(String path)
{
    return (String.Compare(path, 0, "file:", 0, 5, StringComparison.OrdinalIgnoreCase) == 0);
}


对调用者的说明

字符集包括可忽略字符。 在执行区分区域性的比较时,Compare(String, String) 方法不考虑这样的字符。 例如,如果下面的代码,在 .NET Framework 4 或更高版本上运行,“动物”一个区分区域性的比较使用“软动物”(使用连字符或 U+00AD) 指示两个字符串相等。


using System;

public class Example
{
   public static void Main()
   {
      string s1 = "ani\u00ADmal";
      string s2 = "animal";

      Console.WriteLine("Comparison of '{0}' and '{1}': {2}", 
                        s1, s2, String.Compare(s1, s2));
   }
}
// The example displays the following output:
//       Comparison of 'ani-mal' and 'animal': 0


若要识别在字符串比较的可忽略字符,请调用 Compare(String, String, StringComparison) 方法并为 comparisonType 参数提供 CompareOptions.OrdinalCompareOptions.OrdinalIgnoreCase 值。

在下面的示例中,ReverseStringComparer 类说明了如何使用 Compare 方法来计算两个字符串。


using System;
using System.Text;
using System.Collections;

public class SamplesArrayList  {

	public static void Main()  {
		// Creates and initializes a new ArrayList.
		ArrayList myAL = new ArrayList();
		myAL.Add("Eric");
		myAL.Add("Mark");
		myAL.Add("Lance");
		myAL.Add("Rob");
		myAL.Add("Kris");
		myAL.Add("Brad");
		myAL.Add("Kit");
		myAL.Add("Bradley");
		myAL.Add("Keith");
		myAL.Add("Susan");
	
		// Displays the properties and values of	the	ArrayList.
		Console.WriteLine( "Count: {0}", myAL.Count );
		
		PrintValues ("Unsorted", myAL );
		myAL.Sort();
		PrintValues("Sorted", myAL );
		myAL.Sort(new ReverseStringComparer() );
		PrintValues ("Reverse" , myAL );


		string [] names = (string[]) myAL.ToArray (typeof(string));


	}
	public static void PrintValues(string title, IEnumerable	myList )  {
		Console.Write ("{0,10}: ", title);
		StringBuilder sb = new StringBuilder();
		foreach (string s in myList) {
			sb.AppendFormat( "{0}, ", s);
		}
		sb.Remove (sb.Length-2,2);
		Console.WriteLine(sb);
	}
}
public class ReverseStringComparer : IComparer {
   public int Compare (object x, object y) {
	   string s1 = x as string;
	   string s2 = y as string;	  
	   //negate the return value to get the reverse order
	   return - String.Compare (s1,s2);

   }
}



.NET Framework

受以下版本支持:4.5.2、4.5.1、4.5、4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持:4、3.5 SP1

可移植类库

受以下版本支持:可移植类库

适用于 Windows 应用商店应用的 .NET

受以下版本支持:Windows 8

适用于 Windows Phone 应用的 .NET

受以下版本支持:Windows Phone 8、Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(不支持服务器核心角色), Windows Server 2008 R2(支持带 SP1 或更高版本的服务器核心角色;不支持 Itanium)

.NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参阅.NET Framework 系统要求

社区附加资源

添加
显示:
© 2014 Microsoft