30 while (num <
s.Length)
32 if (
char.IsHighSurrogate(readOnlySpan[num]) && num <
s.Length - 1 &&
char.IsLowSurrogate(readOnlySpan[num + 1]))
35 if (readOnlySpan[num] != hr || readOnlySpan[num + 1] != lr)
43 if (
ToLower(readOnlySpan[num]) != readOnlySpan[num])
70 while (num <
s.Length)
72 if (
char.IsHighSurrogate(readOnlySpan[num]) && num <
s.Length - 1 &&
char.IsLowSurrogate(readOnlySpan[num + 1]))
75 if (readOnlySpan[num] != hr || readOnlySpan[num + 1] != lr)
83 if (
ToUpper(readOnlySpan[num]) != readOnlySpan[num])
104 for (
int i = 0; i <
source.Length; i++)
107 if (
char.IsHighSurrogate(c) && i <
source.Length - 1)
110 if (
char.IsLowSurrogate(c2))
125 for (
int i = 0; i <
source.Length; i++)
128 if (
char.IsHighSurrogate(c) && i <
source.Length - 1)
131 if (
char.IsLowSurrogate(c2))
148 if (!
char.IsHighSurrogate(c) ||
index >=
length - 1)
153 if (!
char.IsLowSurrogate(c2))
162 int num =
Math.
Min(lengthA, lengthB);
163 ref
char source = ref strA;
164 ref
char source2 = ref strB;
169 var (num5, elementOffset) =
GetScalar(ref source2, num2, lengthB);
174 source2 = ref
Unsafe.Add(ref source2, elementOffset);
183 source2 = ref
Unsafe.Add(ref source2, elementOffset);
186 return (
int)(num3 - num5);
188 return lengthA - lengthB;
197 char* ptr2 = ptr + (source.Length -
value.Length);
198 char* ptr4 = ptr3 + value.Length - 1;
199 for (
char* ptr5 = ptr; ptr5 <= ptr2; ptr5++)
205 if (!
char.IsHighSurrogate(*ptr6) || ptr6 == ptr4)
214 else if (
char.IsHighSurrogate(*ptr7) &&
char.IsLowSurrogate(ptr7[1]) &&
char.IsLowSurrogate(ptr6[1]))
235 return (
int)(ptr5 - ptr);
249 char* ptr2 = ptr + value.Length - 1;
250 for (
char* ptr4 = ptr3 + (
source.Length -
value.Length); ptr4 >= ptr3; ptr4--)
256 if (!
char.IsHighSurrogate(*ptr5) || ptr5 == ptr2)
265 else if (
char.IsHighSurrogate(*ptr6) &&
char.IsLowSurrogate(ptr6[1]) &&
char.IsLowSurrogate(ptr5[1]))
286 return (
int)(ptr4 - ptr3);
static char ToLower(char codePoint)
static char ToUpper(char codePoint)
static string ToLower(string s)
static unsafe int IndexOfIgnoreCase(ReadOnlySpan< char > source, ReadOnlySpan< char > value)
static unsafe int LastIndexOfIgnoreCase(ReadOnlySpan< char > source, ReadOnlySpan< char > value)
static char ToLower(char c)
static void ToLower(ReadOnlySpan< char > source, Span< char > destination)
static int GetScalar(ref char source, int index, int length)
static int CompareStringIgnoreCase(ref char strA, int lengthA, ref char strB, int lengthB)
static char ToUpper(char c)
static string ToUpper(string s)
static void ToUpper(ReadOnlySpan< char > source, Span< char > destination)
static void ToLower(char h, char l, out char hr, out char lr)
static void ToUpper(char h, char l, out char hr, out char lr)
static bool Equal(char h1, char l1, char h2, char l2)
static byte Min(byte val1, byte val2)
static uint GetScalarFromUtf16SurrogatePair(uint highSurrogateCodePoint, uint lowSurrogateCodePoint)
ReadOnlySpan< T > Slice(int start)