CompareInfo.Compare Method (String, Int32, String, Int32)
Compares the end section of a string with the end section of another string.
Namespace: System.Globalization
Assembly: mscorlib (in mscorlib.dll)
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.
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. |
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. The Compare(String, Int32, String, Int32) method does not consider these characters when it performs a linguistic or culture-sensitive comparison. To recognize ignorable characters in your comparison, call the Compare(String, Int32, String, Int32, CompareOptions) method and supply a value of CompareOptions.Ordinal or CompareOptions.OrdinalIgnoreCase for the options parameter.
The following example compares portions of two strings using the different CompareInfo objects:
CompareInfo object associated with the Spanish (Spain) culture with international sort
CompareInfo object associated with the Spanish (Spain) culture with traditional sort
CompareInfo object associated with the InvariantCulture
using System; using System.Globalization; public class SamplesCompareInfo { public static void Main() { // Defines the strings to compare. String myStr1 = "calle"; String myStr2 = "calor"; // Uses GetCompareInfo to create the CompareInfo that uses the "es-ES" culture with international sort. CompareInfo myCompIntl = CompareInfo.GetCompareInfo( "es-ES" ); // Uses GetCompareInfo to create the CompareInfo that uses the "es-ES" culture with traditional sort. CompareInfo myCompTrad = CompareInfo.GetCompareInfo( 0x040A ); // Uses the CompareInfo property of the InvariantCulture. CompareInfo myCompInva = CultureInfo.InvariantCulture.CompareInfo; // Compares two strings using myCompIntl. Console.WriteLine( "Comparing \"{0}\" and \"{1}\"", myStr1.Substring( 2 ), myStr2.Substring( 2 ) ); Console.WriteLine( " With myCompIntl.Compare: {0}", myCompIntl.Compare( myStr1, 2, myStr2, 2 ) ); Console.WriteLine( " With myCompTrad.Compare: {0}", myCompTrad.Compare( myStr1, 2, myStr2, 2 ) ); Console.WriteLine( " With myCompInva.Compare: {0}", myCompInva.Compare( myStr1, 2, myStr2, 2 ) ); } } /* This code produces the following output. Comparing "lle" and "lor" With myCompIntl.Compare: -1 With myCompTrad.Compare: 1 With myCompInva.Compare: -1 */
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