[C#] System.Webの参照なしで HttpUtility.ParseQueryString を使う

HttpUtility.ParseQueryString を使いたいが、 .Net Framework 4.0 Client Profile だと System.Web が使えない。 StackOverFlowなどを調べてもまともに使えそうなコードが見当たらないので自分で書いた。

public static NameValueCollection ParseQueryString(string query)
{
  var ret = new NameValueCollection();
  foreach (string pair in query.Split('&'))
  {
    string[] kv = pair.Split('=');

    string key = kv.Length == 1
      ? null : Uri.UnescapeDataString(kv[0]).Replace('+', ' ');

    string[] values = Uri.UnescapeDataString(
      kv.Length == 1 ? kv[0] : kv[1]).Replace('+', ' ').Split(',');

    foreach (string value in values)
    {
      ret.Add(key, value);
    }
  }
  return ret;
}
Share
関連記事