CompareInfo.Compare Method (String, String)
Compares two strings.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- string1
-
Type:
System.String
The first string to compare.
- string2
-
Type:
System.String
The second string to compare.
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 | string1 is less than string2. |
greater than zero | string1 is greater than string2. |
By default, the comparison is performed by using CompareOptions.None. 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. |
Notes to Callers:
Character sets include ignorable characters, which are characters that are not considered when performing a linguistic or culture-sensitive comparison. The Compare(String, String) method does not consider such characters when it performs a culture-sensitive comparison. For instance, a culture-sensitive comparison of "animal" with "ani-mal" (using a soft hyphen, or U+00AD) indicates that the two strings are equivalent, as the following example shows.
Imports System.Globalization Module Example Public Sub Main() Dim ci As CompareInfo = CultureInfo.CurrentCulture.CompareInfo Dim s1 As String = "ani" + ChrW(&h00AD) + "mal" Dim s2 As String = "animal" Console.WriteLine("Comparison of '{0}' and '{1}': {2}", s1, s2, ci.Compare(s1, s2)) End Sub End Module ' The example displays the following output: ' Comparison of 'ani-mal' and 'animal': 0
To recognize ignorable characters in a string comparison, call the Compare(String, String, CompareOptions) method and supply a value of either 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
' The following code example compares two strings using the different CompareInfo instances: ' a CompareInfo instance associated with the "Spanish - Spain" culture with international sort, ' a CompareInfo instance associated with the "Spanish - Spain" culture with traditional sort, and ' a CompareInfo instance associated with the InvariantCulture. Imports System Imports System.Globalization Public Class SamplesCompareInfo Public Shared Sub Main() ' Defines the strings to compare. Dim myStr1 As [String] = "calle" Dim myStr2 As [String] = "calor" ' Uses GetCompareInfo to create the CompareInfo that uses the "es-ES" culture with international sort. Dim myCompIntl As CompareInfo = CompareInfo.GetCompareInfo("es-ES") ' Uses GetCompareInfo to create the CompareInfo that uses the "es-ES" culture with traditional sort. Dim myCompTrad As CompareInfo = CompareInfo.GetCompareInfo(&H40A) ' Uses the CompareInfo property of the InvariantCulture. Dim myCompInva As CompareInfo = CultureInfo.InvariantCulture.CompareInfo ' Compares two strings using myCompIntl. Console.WriteLine("Comparing ""{0}"" and ""{1}""", myStr1, myStr2) Console.WriteLine(" With myCompIntl.Compare: {0}", myCompIntl.Compare(myStr1, myStr2)) Console.WriteLine(" With myCompTrad.Compare: {0}", myCompTrad.Compare(myStr1, myStr2)) Console.WriteLine(" With myCompInva.Compare: {0}", myCompInva.Compare(myStr1, myStr2)) End Sub 'Main End Class 'SamplesCompareInfo 'This code produces the following output. ' 'Comparing "calle" and "calor" ' With myCompIntl.Compare: -1 ' With myCompTrad.Compare: 1 ' With myCompInva.Compare: -1
The following example demonstrates calling the Compare method.
Imports System Imports System.Text Imports System.Globalization NotInheritable Public Class App Shared Sub Main(ByVal args() As String) Dim sign() As String = {"<", "=", ">"} ' The code below demonstrates how strings compare ' differently for different cultures. Dim s1 As String = "Coté" Dim s2 As String = "coté" Dim s3 As String = "côte" ' Set sort order of strings for French in France. Dim ci As CompareInfo = New CultureInfo("fr-FR").CompareInfo Console.WriteLine("The LCID for {0} is {1}.", ci.Name, ci.LCID) ' Display the result using fr-FR Compare of Coté = coté. Console.WriteLine("fr-FR Compare: {0} {2} {1}", _ s1, s2, sign((ci.Compare(s1, s2, CompareOptions.IgnoreCase) + 1))) ' Display the result using fr-FR Compare of coté > côte. Console.WriteLine("fr-FR Compare: {0} {2} {1}", _ s2, s3, sign((ci.Compare(s2, s3, CompareOptions.None) + 1))) ' Set sort order of strings for Japanese as spoken in Japan. ci = New CultureInfo("ja-JP").CompareInfo Console.WriteLine("The LCID for {0} is {1}.", ci.Name, ci.LCID) ' Display the result using ja-JP Compare of coté < côte. Console.WriteLine("ja-JP Compare: {0} {2} {1}", _ s2, s3, sign((ci.Compare(s2, s3) + 1))) End Sub 'Main End Class 'App ' This code produces the following output. ' ' The LCID for fr-FR is 1036. ' fr-FR Compare: Coté = coté ' fr-FR Compare: coté > côte ' The LCID for ja-JP is 1041. ' ja-JP Compare: coté < côte
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
