質問

" foo%20bar"のような文字列があります私は" foo bar"が欲しいそれから。

Emacs LispでURLエンコードされた文字列(クエリ文字列)をデコードするための組み込み関数が必要であることは知っていますが、私にとっては、lisp /フォルダまたはグーグルで。

それが何と呼ばれているのか覚えていますか?

役に立ちましたか?

解決

org-link-unescape は非常に単純な場合に仕事をします... w3m-url-decode-string は優れていますが、組み込みではなく、私がローカルに持っているバージョンはEmacs 23では動作しません。

他のヒント

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解析機能の束を提供します。 8212; huaiyuan およびチャーリー・マーティンはすでに指摘しました。以下に、使用方法のアイデアを示す小さな例を示します。

(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を解析することが主な目的であるため、 org-mode よりも信頼する方が良いと思います。

少し難しくしすぎていると思います: split-string はおそらくあなたが望むことのほとんどを行うでしょう。より手の込んだものについては、 url-expand.el の関数をご覧ください。残念ながら、それらの多くにはdoc-stringがないため、コードを読む必要があります。

url-generic-parse-url は潜在的な勝者のように見えます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top