/// <summary> /// Parse string /// </summary> /// <param name="value">contains "a=b,c=d" etc</param> /// <param name="target">Collection to fill with the values</param> public static void Parse(string value, ParameterCollection target) { if (value == null) throw new ArgumentNullException("value"); if (target == null) throw new ArgumentNullException("target"); var index = 0; var lastCh = char.MinValue; var name = ""; var oldPos = 0; bool gotEquals = false; while (index < value.Length) { var ch = value[index]; switch (ch) { case '=': if (gotEquals) break; gotEquals = true; if (lastCh != '\\') { name = value.Substring(oldPos, index - oldPos).Trim(' '); oldPos = index + 1; } break; case ',': gotEquals = false; if (lastCh != '\\') { target.Add(name, value.Substring(oldPos, index - oldPos).Trim(' ', '"')); name = ""; oldPos = index + 1; } break; } lastCh = value[index]; ++index; } if (name != "") { target.Add(name, value.Substring(oldPos).Trim(' ', '"')); } }