2009-06-19 16 views
21

मैं एक ऐसा कथन लिखना चाहता हूं जो स्ट्रिंग खाली है या नहीं, इस पर कुछ आधार करेगा। उदाहरण के लिए: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 विधि के स्थान पर। ऐसा करने का सही तरीका क्या है?

धन्यवाद

उत्तर

33

elisp में के बाद से, एक स्ट्रिंग एक पूर्णांक सरणी, आप

(= (length user-str) 0) 

उपयोग कर सकते हैं तुम भी उपयोग कर सकते हैं (स्ट्रिंग =) जो आम तौर पर

(string= "" user-str) 
पढ़ने में आसान है है

समान काम भी, लेकिन थोड़ी धीमी:

(equal "" user-str) 
1

मुझे यकीन है कि क्या इस परीक्षण के विहित तरीका है नहीं कर रहा हूँ, लेकिन आप लंबाई फ़ंक्शन का उपयोग करें और यदि आपके स्ट्रिंग की लंबाई शून्य से अधिक है देखने के लिए जाँच कर सकते हैं:

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

EmacsWiki elisp रसोई की किताब an example of a trim function यदि है आप परीक्षण से पहले व्हाइटस्पेस को हटाना चाहते हैं।

3

यदि आप अपने कोड में भारी तारों के साथ काम करते हैं, तो मैं दृढ़ता से मैग्नर सेवेन की s.el स्ट्रिंग मैनिपुलेशन लाइब्रेरी का उपयोग करने की सलाह देता हूं।

s-blank? जांच करता है कि स्ट्रिंग खाली है:

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

मैं अपने utils.lisp में यह एक रखें:

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

तो मुझे क्या करना:

(not (empty-string-p some-string)) 
संबंधित मुद्दे