F# build and parse URL query strings
F#
open System
let buildQuery (pairs: (string * string) list) =
pairs
|> List.map (fun (k, v) -> Uri.EscapeDataString k + "=" + Uri.EscapeDataString v)
|> String.concat "&"
let parseQuery (query: string) =
query.TrimStart('?').Split('&', StringSplitOptions.RemoveEmptyEntries)
|> Array.map (fun part ->
match part.Split('=', 2) with
| [| k; v |] -> Uri.UnescapeDataString k, Uri.UnescapeDataString v
| [| k |] -> Uri.UnescapeDataString k, "")
|> Map.ofArray