CompareInfo.Compare Method (String, Int32, String, Int32, CompareOptions)
Compares the end section of a string with the end section of another string using the specified CompareOptions value.
Namespace: System.Globalization
Assembly: mscorlib (in mscorlib.dll)
public virtual int Compare( string string1, int offset1, string string2, int offset2, CompareOptions options )
Parameters
- string1
- Type: System.String
The first string to compare.
- offset1
- Type: System.Int32
The zero-based index of the character in string1 at which to start comparing.
- string2
- Type: System.String
The second string to compare.
- offset2
- Type: System.Int32
The zero-based index of the character in string2 at which to start comparing.
- options
- Type: System.Globalization.CompareOptions
A value that defines how string1 and string2 should be compared. options is either the enumeration value Ordinal, or a bitwise combination of one or more of the following values: IgnoreCase, IgnoreSymbols, IgnoreNonSpace, IgnoreWidth, IgnoreKanaType, and StringSort.
Return Value
Type: System.Int32A 32-bit signed integer indicating the lexical relationship between the two comparands.
Value | Condition |
|---|---|
zero | The two strings are equal. |
less than zero | The specified section of string1 is less than the specified section of string2. |
greater than zero | The specified section of string1 is greater than the specified section of string2. |
| Exception | Condition |
|---|---|
| ArgumentOutOfRangeException | offset1 or offset2 is less than zero. -or- offset1 is greater than or equal to the number of characters in string1. -or- offset2 is greater than or equal to the number of characters in string2. |
| ArgumentException | options contains an invalid CompareOptions value. |
If a security decision depends on a string comparison or a case change, you should use the InvariantCulture property to ensure that the behavior is consistent regardless of the culture settings of the operating system.
Note |
|---|
When possible, you should call string comparison methods that have a parameter of type CompareOptions to specify the kind of comparison expected. As a general rule, use linguistic options (using the current culture) for comparing strings displayed in the user interface and specify Ordinal or OrdinalIgnoreCase for security comparisons. |
Character sets include ignorable characters, which are characters that are not considered when performing a linguistic or culture-sensitive comparison. The Compare(String, Int32, String, Int32, CompareOptions) method does not consider such characters when performing a culture-sensitive comparison. To recognize ignorable characters in your comparison, supply a value of CompareOptions.Ordinal or CompareOptions.OrdinalIgnoreCase for the options parameter.
The following example compares portions of two strings using different CompareOptions settings.
using System; using System.Globalization; public class SamplesCompareInfo { public static void Main() { // Defines the strings to compare. String myStr1 = "My Uncle Bill's clients"; String myStr2 = "My uncle bills clients"; // Creates a CompareInfo that uses the InvariantCulture. CompareInfo myComp = CultureInfo.InvariantCulture.CompareInfo; // Compares two strings using myComp. Console.WriteLine( "Comparing \"{0}\" and \"{1}\"", myStr1.Substring( 10 ), myStr2.Substring( 10 ) ); Console.WriteLine( " With no CompareOptions : {0}", myComp.Compare( myStr1, 10, myStr2, 10 ) ); Console.WriteLine( " With None : {0}", myComp.Compare( myStr1, 10, myStr2, 10, CompareOptions.None ) ); Console.WriteLine( " With Ordinal : {0}", myComp.Compare( myStr1, 10, myStr2, 10, CompareOptions.Ordinal ) ); Console.WriteLine( " With StringSort : {0}", myComp.Compare( myStr1, 10, myStr2, 10, CompareOptions.StringSort ) ); Console.WriteLine( " With IgnoreCase : {0}", myComp.Compare( myStr1, 10, myStr2, 10, CompareOptions.IgnoreCase ) ); Console.WriteLine( " With IgnoreSymbols : {0}", myComp.Compare( myStr1, 10, myStr2, 10, CompareOptions.IgnoreSymbols ) ); Console.WriteLine( " With IgnoreCase and IgnoreSymbols : {0}", myComp.Compare( myStr1, 10, myStr2, 10, CompareOptions.IgnoreCase | CompareOptions.IgnoreSymbols ) ); } } /* This code produces the following output. Comparing "ill's clients" and "ills clients" With no CompareOptions : 1 With None : 1 With Ordinal : -76 With StringSort : -1 With IgnoreCase : 1 With IgnoreSymbols : 0 With IgnoreCase and IgnoreSymbols : 0 */
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Note