如何";URL解码";Emacs Lisp中的字符串?
我有一个类似“foo%20bar”的字符串,我想从中去掉“foo-bar” 我知道在Emacs Lisp中必须有一个内置函数来解码URL编码的字符串(查询字符串),但就我的一生而言,无论是在我的Lisp/文件夹中还是在google中,我今天都找不到它如何";URL解码";Emacs Lisp中的字符串?,url,emacs,elisp,urlencode,urldecode,Url,Emacs,Elisp,Urlencode,Urldecode,我有一个类似“foo%20bar”的字符串,我想从中去掉“foo-bar” 我知道在Emacs Lisp中必须有一个内置函数来解码URL编码的字符串(查询字符串),但就我的一生而言,无论是在我的Lisp/文件夹中还是在google中,我今天都找不到它 有人记得它叫什么吗?我想你把它弄得有点太难了:分割字符串可能会做你想做的大部分事情。对于更有趣的东西,请查看url expand.el中的函数;不幸的是,其中许多没有文档字符串,所以您可能需要阅读代码 url-generic-parse-url看起
有人记得它叫什么吗?我想你把它弄得有点太难了:
分割字符串
可能会做你想做的大部分事情。对于更有趣的东西,请查看url expand.el
中的函数;不幸的是,其中许多没有文档字符串,所以您可能需要阅读代码
url-generic-parse-url
看起来像是一个潜在的赢家。org-link-unescape
在非常简单的情况下完成这项工作w3m url解码字符串更好,但它不是内置的,而且我在本地使用的版本不适用于Emacs 23。Emacs附带了,它提供了一系列url解析功能,正如前面所指出的。下面是一个小示例,可以让您了解如何使用它:
url-unhex-string
(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"))
我认为依赖它比依赖组织模式更好,因为它的主要目的是解析URL。在我的例子中,我需要以交互方式来完成这项工作。前面的答案为我提供了正确的调用函数,然后只需稍微包装一下,使它们具有交互性:
(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))
添加盐,我的意思是根据口味绑定到键。你可以从MELPA中抓取urlenc
,并使用urlenc:decode region
来表示区域,或者urlenc:decode insert
以交互方式插入你的文本嗯,可能我说错了。我有一个类似“foo%20bar”的字符串,我想从中去掉“foo-bar”。我看不出拆分字符串或url通用解析url或url-expand.el中的任何内容在这里有什么帮助。现在已经足够了。但奇怪的是,它只使用17个字符的常量列表。也许我会在某个时候解决这个问题。url unhex string
可以满足您的需要。喜欢这个例子!我有一个url unhex字符串与Emacs 25不匹配:/You可能需要(require'url util)--在实践中,这通常会通过一些其他代码加载来完成,但依赖于它肯定不好。