Question

J'ai une chaîne du type "foo% 20bar". et je veux "foo bar" en dehors de ça.

Je sais qu’il doit exister une fonction intégrée permettant de décoder une chaîne encodée par une URL (chaîne de requête) dans Lisp Lisp, mais je ne peux la trouver aujourd’hui, que ce soit dans mon dossier lisp / ou avec google.

Quelqu'un se souvient-il de son nom?

Était-ce utile?

La solution

org-link-unescape fait le travail dans des cas très simples ... w3m-url-decode-string est préférable, mais il n'est pas intégré et la version que j’ai localement ne fonctionne pas avec Emacs 23.

Autres conseils

url-unhex-string

Dans mon cas, je devais le faire de manière interactive. Les réponses précédentes me donnaient les bonnes fonctions à appeler, alors il suffisait de les emballer pour les rendre interactives:

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

Ajoutez du sel, je veux dire, liez les clés selon vos goûts.

Emacs est livré avec une bibliothèque d'URL , qui fournit une multitude de fonctions d'analyse d'URL & # 8212; comme huaiyuan et Charlie Martin a déjà été soulignée. Voici un petit exemple qui vous donnerait une idée de son utilisation:

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

Je pense qu'il est préférable de compter dessus que org-mode car est son principal objectif d'analyser l'URL.

Je pense que vous rendez les choses un peu trop difficiles: chaîne scindée fera probablement la plupart de ce que vous voulez. Pour plus d’informations, jetez un coup d’œil aux fonctions de url-expand.el ; malheureusement, beaucoup d'entre eux n'ont pas de chaîne de documentation, vous devrez donc peut-être lire le code.

url-generic-parse-url ressemble à un gagnant potentiel.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top