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.
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. |
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^, 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 namespace System; using namespace System::Globalization; int 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, static_cast<CompareOptions>(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 */
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
