Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ EscapeString() [2/2]

static string System.UriHelper.EscapeString ( string stringToEscape,
bool checkExistingEscaped,
ReadOnlySpan< bool > unreserved,
char forceEscape1 = '\0',
char forceEscape2 = '\0' )
inlinestaticpackage

Definition at line 110 of file UriHelper.cs.

111 {
112 if (stringToEscape == null)
113 {
114 throw new ArgumentNullException("stringToEscape");
115 }
116 if (stringToEscape.Length == 0)
117 {
118 return string.Empty;
119 }
120 ReadOnlySpan<bool> readOnlySpan = default(Span<bool>);
121 if ((forceEscape1 | forceEscape2) == 0)
122 {
123 readOnlySpan = unreserved;
124 }
125 else
126 {
127 Span<bool> span = stackalloc bool[128];
128 unreserved.CopyTo(span);
129 span[forceEscape1] = false;
130 span[forceEscape2] = false;
131 readOnlySpan = span;
132 }
133 int i;
134 for (i = 0; i < stringToEscape.Length; i++)
135 {
136 char index;
137 if ((index = stringToEscape[i]) > '\u007f')
138 {
139 break;
140 }
141 if (!readOnlySpan[index])
142 {
143 break;
144 }
145 }
146 if (i == stringToEscape.Length)
147 {
148 return stringToEscape;
149 }
150 Span<char> initialBuffer = stackalloc char[512];
152 vsb.Append(stringToEscape.AsSpan(0, i));
153 EscapeStringToBuilder(stringToEscape.AsSpan(i), ref vsb, readOnlySpan, checkExistingEscaped);
154 return vsb.ToString();
155 }
static void EscapeStringToBuilder(ReadOnlySpan< char > stringToEscape, ref System.Text.ValueStringBuilder vsb, ReadOnlySpan< bool > noEscape, bool checkExistingEscaped)
Definition UriHelper.cs:195

References System.Text.ValueStringBuilder.Append(), System.ReadOnlySpan< T >.CopyTo(), System.UriHelper.EscapeStringToBuilder(), System.index, and System.Text.ValueStringBuilder.ToString().

Referenced by System.Uri.CreateHostString(), System.Uri.EscapeDataString(), System.Uri.EscapeString(), System.Uri.EscapeUriString(), System.Uri.GetCanonicalPath(), System.Uri.GetRelativeSerializationString(), System.Uri.InternalEscapeString(), and System.Uri.ReCreateParts().