public static ParameterCollection Parse(ITextParser reader) { if (reader == null) throw new ArgumentNullException("reader"); var parameters = new ParameterCollection(); while (!reader.EndOfFile) { string name = Uri.UnescapeDataString(reader.ReadToEnd("&=")); char current = reader.Current; reader.Consume(); switch (current) { case '&': parameters.Add(name, string.Empty); break; case '=': { string value = reader.ReadToEnd("&"); reader.Consume(); parameters.Add(name, Uri.UnescapeDataString(value)); } break; default: parameters.Add(name, string.Empty); break; } } return parameters; }
/// <summary> /// Get parameters /// </summary> /// <param name="arrayName">Sub array (text array)</param> /// <returns></returns> public IParameterCollection GetParameters(string arrayName) { var collection = new ParameterCollection(); arrayName = arrayName + "["; foreach (var item in _items) { if (!item.Key.StartsWith(arrayName)) continue; int pos = arrayName.IndexOf("]"); if (pos == -1) continue; string name = arrayName.Substring(arrayName.Length, pos - arrayName.Length); foreach (string value in item.Value) collection.Add(name, value); } return collection; }