2009-06-19 16 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-empty)を使用しています。これを行う正しい方法は何ですか?

おかげ

答えて

33

elispの中で、文字列は、int型の配列であるので、あなたはまた、通常

(string= "" user-str) 
を読みやすいです(文字列を=)を使用することができ

(= (length user-str) 0) 

を使用することができます

同じように機能しますが、少し遅くなります。

(equal "" user-str) 
1

私はこれをテストする標準的な方法が何であるかわからないんだけど、あなたは長さ機能を使用して、文字列の長さがゼロより大きいかどうかを確認することができます:

(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)) 
関連する問題