[Modify] Polish it
This commit is contained in:
parent
2d47d5e663
commit
e9a9e925c8
@ -825,33 +825,44 @@ namespace WebSocketSharp
|
|||||||
var seps = new string (separators);
|
var seps = new string (separators);
|
||||||
|
|
||||||
var buff = new StringBuilder (32);
|
var buff = new StringBuilder (32);
|
||||||
|
var end = len - 1;
|
||||||
var escaped = false;
|
var escaped = false;
|
||||||
var quoted = false;
|
var quoted = false;
|
||||||
|
|
||||||
for (var i = 0; i < len; i++) {
|
for (var i = 0; i <= end; i++) {
|
||||||
var c = value[i];
|
var c = value[i];
|
||||||
if (c == '"') {
|
buff.Append (c);
|
||||||
if (escaped)
|
|
||||||
escaped = !escaped;
|
|
||||||
else
|
|
||||||
quoted = !quoted;
|
|
||||||
}
|
|
||||||
else if (c == '\\') {
|
|
||||||
if (i < len - 1 && value[i + 1] == '"')
|
|
||||||
escaped = true;
|
|
||||||
}
|
|
||||||
else if (seps.Contains (c)) {
|
|
||||||
if (!quoted) {
|
|
||||||
yield return buff.ToString ();
|
|
||||||
|
|
||||||
buff.Length = 0;
|
if (c == '"') {
|
||||||
|
if (escaped) {
|
||||||
|
escaped = false;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else {
|
quoted = !quoted;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
buff.Append (c);
|
if (c == '\\') {
|
||||||
|
if (i == end)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (value[i + 1] == '"')
|
||||||
|
escaped = true;
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (seps.Contains (c)) {
|
||||||
|
if (quoted)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
buff.Length -= 1;
|
||||||
|
yield return buff.ToString ();
|
||||||
|
|
||||||
|
buff.Length = 0;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
yield return buff.ToString ();
|
yield return buff.ToString ();
|
||||||
|
Loading…
Reference in New Issue
Block a user