Pergunta

Eu tenho uma string como "foo% 20bar" e eu quero "foo bar" fora dele.

Eu sei que não tem que ser um built-in função para decodificar uma string codificada em URL (string de consulta) em Emacs Lisp, mas para a vida de mim eu não posso encontrá-lo hoje, seja na minha lisp / pasta ou com o Google.

Qualquer pessoa lembrar o que é chamado?

Foi útil?

Solução

org-link-unescape faz o trabalho para casos muito simples ... w3m-url-decode-string é melhor, mas não é construído em e a versão que tenho localmente não está funcionando com o Emacs 23.

Outras dicas

url-unhex-string

No meu caso eu precisava fazer isso de forma interativa. As respostas anteriores me deu as funções direito de chamar, então era apenas uma questão de envolvê-lo um pouco para torná-los interativa:

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

Adicione o sal, eu ligamento médio para chaves de acordo com o gosto.

Emacs é fornecido com um URL biblioteca, que oferece um monte de URL parsing funções- como Huaiyuan e Charlie Martin já apontou. Aqui está um pequeno exemplo que iria dar-lhe uma idéia de como usá-lo:

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

Eu acho que é melhor contar com ele do que org-mode como é seu principal objetivo a URL de análise.

Eu acho que você está fazendo isso um pouco demais: split-string provavelmente irá fazer mais do que você quer. Para o material mais sofisticado, ter um olhar para as funções em url-expand.el; Infelizmente, muitos deles não têm doc-cordas, assim você pode ter que ler o código.

url-generic-parse-url olhares como um potencial vencedor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top