HomeSearch

C# String Compare and CompareTo

Use the Compare and CompareOrdinal methods on strings. See the results of CompareTo.
Compare. This method determines the sort order of strings. It checks if one string is ordered before another when in alphabetical order, whether it is ordered after, or is equivalent.StringsString Equals
Method info. There are 3 methods that provide this functionality—Compare, CompareOrdinal and CompareTo. Two strings are always compared.
An example. Normally we need the Compare methods for sorting algorithms. We use them to test whether one string comes before or after the other in a plain ASCII sort.Sort

Part A: We use the string.Compare static method. It is not called on an instance, and we must pass 2 arguments.

Part B: We invoke the static CompareOrdinal—this treats strings by their numeric (ordinal) character values.

Part C: We call the CompareTo instance method. We cannot use this method on a null variable.

CompareTo

Result: If the first string is bigger, the result is 1. If the first string is smaller, the result is -1.

And: If both strings are equal, the result is 0. The number essentially indicates how much "larger" the first string is.

C# program that uses Compare, CompareOrdinal and CompareTo methods using System; class Program { static void Main() { string a = "a"; string b = "b"; // Part A: use static Compare. int c = string.Compare(a, b); Console.WriteLine(c); // Part B: use static CompareOrdinal. c = string.CompareOrdinal(b, a); Console.WriteLine(c); // Part C: use CompareTo. c = a.CompareTo(b); Console.WriteLine(c); c = b.CompareTo(a); Console.WriteLine(c); } } Output -1 (This means a is smaller than b) 1 (This means b is smaller than a) -1 1
Review, results. It is important to understand the possible results of Compare methods. Here are the int return values—we see just 3 values: -1, zero, and 1.Int, uint
String Compare method results: String A: First alphabetically String B: Second alphabetically Compare(A, B): -1 Compare(B, A): 1 Compare(A, A): 0 Compare(B, B): 0
Notes, globalization. By default, string.Compare and CompareTo use the system globalization for safe comparisons. Cultures such as Turkish have common letters that need globalization.

Tip: You can specify those cultures in the method call as a parameter to accomplish this goal.

A discussion. All sorting algorithms must see if one string should be ordered before any other string. The Compare methods are ideal for when you need to implement your own sorting methods.

Note: Compare methods are not needed to check string equality. You can use the Equals method, or the == operator, for equality.

Case. String comparisons are by default case-sensitive. But you can use the StringComparison.OrdinalIgnoreCase enumerated constant to use a case-insensitive comparison.StringComparison, StringComparer

Tip: This option is useful in many programs, such as those that deal with the Windows file system where file case is not important.

A summary. The Compare methods see if one string is larger, smaller or equal to another. Compare returns 1, 0 or -1 if a string is alphabetically first, equal, or second.
Home
Dot Net Perls
© 2007-2020 Sam Allen. Every person is special and unique. Send bug reports to info@dotnetperls.com.