2009-06-19 12 views
21

문자열이 비어 있는지 여부를 결정하는 if 문을 작성하고 싶습니다. 예를 들어이 인위적인 예에서Emacs Lisp에서 문자열이 비어 있는지 확인하는 방법?

(defun prepend-dot-if-not-empty (user-str) 
    (interactive "s") 
    (if (is-empty user-str) 
    (setq user-str (concat "." user-str))) 
    (message user-str)) 

, 나는 진짜 elisp 방법 대신에 (IS-빈) 사용하고 있습니다. 이 일을 올바르게 수행하는 방법은 무엇입니까?

감사

elisp에서 이후

답변

33

는 문자열 int 배열, 당신은 또한 (문자열 =)하는이

(string= "" user-str) 
를 읽을 일반적으로 쉽게 사용할 수 있습니다

(= (length user-str) 0) 

를 사용할 수있다

동등하지만 조금 느립니다.

(equal "" user-str) 
1

나는이 테스트의 표준 방법이 무엇인지 확실하지 않다,하지만 당신은 길이 기능을 사용하여 문자열의 길이가 0보다 큰 있는지 확인할 수 있습니다 :

(length "abc") 
=> 3 
(length "") 
=> 0 

EmacsWiki elisp 요리 책이 an example of a trim function 경우가 있습니다 테스트 전에 공백을 제거하려고합니다.

3

문자열에 집중적으로 작업하는 경우 Magnar Sveen의 s.el 문자열 조작 라이브러리를 사용하는 것이 좋습니다. 문자열이 비어있는 경우

s-blank? 검사 : 내가 다음

(defun empty-string-p (string) 
    "Return true if the string is empty or nil. Expects string." 
    (or (null string) 
     (zerop (length (trim string))))) 

:

(s-blank? "") ; => t 
3

내 utils.lisp에서이 일을 계속

(not (empty-string-p some-string)) 
관련 문제