문제

나는 "foo%20bar"와 같은 문자열을 가지고 있으며 "foo bar"를 원합니다.

EMACS LISP에서 URL 인코딩 문자열 (쿼리 문자열)을 디코딩하는 내장 기능이 있다는 것을 알고 있지만 LISP/ 폴더 나 Google에서 오늘은 찾을 수 없습니다.

아무도 그것을 불렀던 것을 기억하십니까?

도움이 되었습니까?

해결책

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 파싱 함수를 제공합니다 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을 구문 분석하는 주요 목적.

나는 당신이 그것을 너무 힘들게 만들고 있다고 생각합니다. split-string 아마도 당신이 원하는 대부분의 일을 할 것입니다. 더 멋진 물건의 경우 기능을 살펴보십시오. url-expand.el; 불행히도, 그들 중 많은 사람들에게 문자열이 없으므로 코드를 읽어야 할 수도 있습니다.

url-generic-parse-url 잠재적 인 승자처럼 보입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top