Itβs not easy to find out what rules lie within culture-specific string comparisons. It seems quite consistent that when comparing cultures (including invariant culture), punctuation U + 0022 " (QUOTATION MARK) and U + 204D β (BLACK RIGHTWARDS BULLET) are considered" fairly equal. "All these examples show that:
// culture-sensitive: Console.WriteLine("\"".StartsWith("β")); Console.WriteLine("β".StartsWith("\"")); Console.WriteLine("\"".StartsWith("β", StringComparison.InvariantCulture)); Console.WriteLine("β".StartsWith("\"", StringComparison.InvariantCulture)); Console.WriteLine("\"".Equals("β", StringComparison.CurrentCulture)); Console.WriteLine("β".Equals("\"", StringComparison.CurrentCulture)); Console.WriteLine("\"".Equals("β", StringComparison.InvariantCulture)); Console.WriteLine("β".Equals("\"", StringComparison.InvariantCulture)); Console.WriteLine(StringComparer.CurrentCulture.Equals("\"", "β")); Console.WriteLine(StringComparer.CurrentCulture.Equals("β", "\"")); Console.WriteLine(StringComparer.InvariantCulture.Equals("\"", "β")); Console.WriteLine(StringComparer.InvariantCulture.Equals("β", "\"")); Console.WriteLine("\"".CompareTo("β")); Console.WriteLine("β".CompareTo("\"")); Console.WriteLine(StringComparer.CurrentCulture.Compare("\"", "β")); Console.WriteLine(StringComparer.CurrentCulture.Compare("β", "\"")); Console.WriteLine(StringComparer.InvariantCulture.Compare("\"", "β")); Console.WriteLine(StringComparer.InvariantCulture.Compare("β", "\""));
Other examples could be given, for example, static methods on string , but they are equivalent.
With ordinal comparison, of course, U + 0022 should be different from (less) U + 204D (it's easy!):
// ordinal: Console.WriteLine("\"".StartsWith("β", StringComparison.Ordinal)); Console.WriteLine("β".StartsWith("\"", StringComparison.Ordinal)); Console.WriteLine("\"".Equals("β")); Console.WriteLine("β".Equals("\"")); Console.WriteLine(StringComparer.Ordinal.Equals("\"", "β")); Console.WriteLine(StringComparer.Ordinal.Equals("β", "\"")); Console.WriteLine(StringComparer.Ordinal.Compare("\"", "β")); Console.WriteLine(StringComparer.Ordinal.Compare("β", "\""));
source share