我有一个像"foo%20bar"的字符串,我想要"foo bar".
我知道必须有一个内置函数来解码Emacs Lisp中的URL编码字符串(查询字符串),但对于我的生活,我今天无法在我的lisp /文件夹或google中找到它.
有谁记得它叫什么?
url-unhex-string
就我而言,我需要以交互方式进行此操作.以前的答案给了我正确的调用函数,然后只需要将它包装一点就可以使它们具有交互性:
(defun func-region (start end func) "run a function over the region between START and END in current buffer." (save-excursion (let ((text (delete-and-extract-region start end))) (insert (funcall func text))))) (defun hex-region (start end) "urlencode the region between START and END in current buffer." (interactive "r") (func-region start end #'url-hexify-string)) (defun unhex-region (start end) "de-urlencode the region between START and END in current buffer." (interactive "r") (func-region start end #'url-unhex-string))
添加盐,我的意思是根据口味绑定键.
Emacs附带了一个URL库,它提供了一堆URL解析功能 - 正如huaiyuan和Charlie Martin已经指出的那样.这是一个小例子,它可以让你知道如何使用它:
(let ((url "http://www.google.hu/search?q=elisp+decode+url&btnG=Google+keres%E9s&meta=")) ;; Return list of arguments and values (url-parse-query-string ;; Decode hexas (url-unhex-string ;; Retrieve argument list (url-filename ;; Parse URL, return a struct (url-generic-parse-url url))))) => (("meta" "") ("btnG" "Google+keresés") ("/search?q" "elisp+decode+url"))
我认为是更好地依靠它不是org-mode
因为它是解析URL它的主要目的.