Frage

Ich habe eine Zeichenfolge wie „foo% 20bar“ bekam, und ich will „foo bar“ aus ihm heraus.

Ich weiß, es muß eine eingebaute Funktion, um einen URL-codierten Zeichenfolge (Query-String) in Emacs Lisp, aber für das Leben von mir dekodieren kann ich es heute nicht finden, entweder in meinem Lisp / Ordnern oder mit google.

Wer daran erinnern, was es heißt?

War es hilfreich?

Lösung

org-link-unescape macht den Job für sehr einfache Fälle ... w3m-url-decode-string ist besser, aber es nicht gebaut wird, und die Version, die ich vor Ort habe funktioniert nicht mit Emacs 23.

Andere Tipps

url-unhex-string

In meinem Fall musste ich diese interaktiv tun. Die bisherigen Antworten mir die richtigen Funktionen gab, rufen dann war es nur eine Frage der es Einwickeln ein wenig, um sie interaktiv zu machen:

(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))

Mit Salz, ich meine binden Schlüssel nach Geschmack.

Emacs mit einem URL Bibliothek rel="nofollow, die eine Reihe von URL-Analyse Funktionen- bietet wie Huaiyuan und Charlie Martin bereits darauf hingewiesen. Hier ist ein kleines Beispiel, das Ihnen eine Idee geben würde, wie es zu verwenden:

(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"))

Ich denke, besser auf mich als org-mode zu verlassen, wie es ist sein Hauptzweck URL zu analysieren.

Ich glaube, du es machst ein wenig zu hart: split-string wahrscheinlich tun wird, das meiste, was Sie wollen. Für ausgefallenere Sachen, haben einen Blick auf die Funktionen in url-expand.el; Leider sind viele von ihnen nicht doc-Strings haben, so können Sie Code lesen müssen.

url-generic-parse-url sieht aus wie ein potentieller Gewinner.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top