namespace System.Globalization
{
public partial class CompareInfo : IDeserializationCallback
{
public int IndexOf(ReadOnlySpan<char> source, ReadOnlySpan<char> value, CompareOptions options = CompareOptions.None);
public int LastIndexOf(ReadOnlySpan<char> source, ReadOnlySpan<char> value, CompareOptions options = CompareOptions.None);
public int Compare(ReadOnlySpan<char> source, ReadOnlySpan<char> value, CompareOptions options = CompareOptions.None);
public bool IsSuffix(ReadOnlySpan<char> source, ReadOnlySpan<char> suffix, CompareOptions options = CompareOptions.None);
public bool IsPrefix(ReadOnlySpan<char> source, ReadOnlySpan<char> prefix, CompareOptions options = CompareOptions.None);
public static bool IsSortable(ReadOnlySpan<char> text);
}
}
Rationale
While doing some Span optimizations in Regex I noticed that the current comparison extension methods on ROS don't support comparison with a specific culture: MemoryExtensions.CompareTo(this ReadOnlySpan<char> span, ReadOnlySpan<char> value, StringComparison comparisonType).
With string I can do that in different ways either by string.Compare(string, string, CultureInfo, CompareOptions); or by StringComparer.Create(CultureInfo, bool ignoreCase).Compare(string, string).
cc @tarekgh @ahsonkhan
Rationale
While doing some Span optimizations in Regex I noticed that the current comparison extension methods on ROS don't support comparison with a specific culture:
MemoryExtensions.CompareTo(this ReadOnlySpan<char> span, ReadOnlySpan<char> value, StringComparison comparisonType).With string I can do that in different ways either by
string.Compare(string, string, CultureInfo, CompareOptions);or byStringComparer.Create(CultureInfo, bool ignoreCase).Compare(string, string).cc @tarekgh @ahsonkhan