Đây là giải pháp của tôi:
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]]
Như một phần thưởng, đây là một chức năng để mã hóa một danh sách các quy tắc như {a->2, b->3}
vào thông số GET như a=2&b=3
, với thích hợp URL mã hóa:
encode[c_] := cat @@ Riffle[cat[#1, "=", urlesc[#2]]& @@@ c, "&"]
Được yêu thích. Đây là điều tôi muốn làm một lần mỗi sáu tháng hoặc lâu hơn, và tôi luôn kết thúc việc sắp xếp lại thứ gì đó để hoàn thành công việc. – Pillsy