63 {
65 {
66 return string.Empty;
67 }
68 ReadOnlySpan<char> readOnlySpan =
s;
69 int num = 0;
70 while (num <
s.Length)
71 {
72 if (
char.IsHighSurrogate(readOnlySpan[num]) && num <
s.Length - 1 &&
char.IsLowSurrogate(readOnlySpan[num + 1]))
73 {
74 SurrogateCasing.ToUpper(readOnlySpan[num], readOnlySpan[num + 1], out var hr, out var lr);
75 if (readOnlySpan[num] != hr || readOnlySpan[num + 1] != lr)
76 {
77 break;
78 }
79 num += 2;
80 }
81 else
82 {
83 if (
ToUpper(readOnlySpan[num]) != readOnlySpan[num])
84 {
85 break;
86 }
87 num++;
88 }
89 }
91 {
93 }
94 return string.Create(
s.Length, (
s, num), delegate(Span<char>
destination, (
string s,
int i)
state)
95 {
96 ReadOnlySpan<char> readOnlySpan2 =
state.s;
99 });
100 }
static char ToUpper(char c)