Ecco la mia soluzione:
cat = [email protected]@(ToString/@{##})&; (* Like sprintf/strout in C/C++. *)
re = RegularExpression;
hex = IntegerString[#,16]&; (* integer to hex, represented as a string *)
up = ToUpperCase;
asc = ToCharacterCode[#][[1]]&; (* character to ascii code *)
subst = StringReplace;
urlesc[s_String] := subst[s, {" "->"+", [email protected]"[^\w\_\:\.]":>"%"<>[email protected]@[email protected]"$0"}]
urlesc[x_] := [email protected]@x
unesc[s_String] := subst[s, [email protected]"\\%(..)":>[email protected]["$1",16]]
Come bonus, ecco una funzione per codificare un elenco di regole come {a->2, b->3}
in parametri GET come a=2&b=3
, con adeguate URL-encoding:
encode[c_] := cat @@ Riffle[cat[#1, "=", urlesc[#2]]& @@@ c, "&"]
Preferiti. Questo è qualcosa che voglio fare una volta ogni sei mesi o giù di lì, e finisco sempre per ripetere qualcosa per fare il lavoro. – Pillsy