मैं यह कैसे निर्धारित कर सकता हूं कि एक स्ट्रिंग गैर-शून्य है और केवल ग्रूवी में व्हॉट्सएप नहीं है?


128

ग्रूवी isAllWhitespace()स्ट्रिंग्स के लिए विधि जोड़ता है , जो बहुत अच्छा है, लेकिन यह निर्धारित करने का एक अच्छा तरीका नहीं लगता है कि क्या एक स्ट्रिंग में सिर्फ सफेद स्थान के अलावा कुछ है।

सबसे अच्छा मैं के साथ आने में सक्षम है:

myString && !myString.allWhitespace

लेकिन यह बहुत अधिक लगता है। यह सत्यापन के लिए ऐसी सामान्य बात लगती है कि इसे निर्धारित करने का एक सरल तरीका होना चाहिए।

जवाबों:


245

एक और विकल्प है

if (myString?.trim()) {
  ...
}

3
myString .trim () प्रश्न के बजाय एक स्ट्रिंग (या अशक्त या रिक्त) देता है जो बूलियन देता है। मुझे लगता है कि यह निर्भर करता है कि आप आउटपुट का उपयोग कैसे कर रहे हैं, सिर्फ 'अगर' यह ठीक है।
स्टीवन

12
याboolean containsData = myString?.trim()
tim_yates

4
@ सच, ​​ग्रूवी सच कहता है कि एक अशक्त या खाली स्ट्रिंग झूठी है, इसलिए आप इसे केवल उसी ()रूप में लपेट सकते हैं यदि आपको इसे एक बयान में ज़रूरत है जो पहले से ही इसे एक बूलियन नहीं बना देगा। उदाहरण के लिए,def myVal = (myString?.trim())
cdeszaq

12
@cdeszaq यदि आप ऐसा def myVal = (myString?.trim())तो myValया तो एक Stringया null, ब्रेसिज़ में यह लपेटकर एक बूलियन के लिए इसे बदल नहीं करता है। हालाँकि, अगर आप इसे बूलियन वैरिएबल या असाइन करते हैं (myString?.trim()) as booleanया (या मेरे उत्तर में) इसे एक ifस्टेटमेंट में उपयोग करते हैं, तो जैसा कि आप कहते हैं कि यह स्ट्रिंग (या अशक्त) के ग्रूवी ट्रुथ वैल्यू का उपयोग करेगा
tim_yates

2
​if ("false") println "that's true too"
टाइम_yates 10

9

आप इसे और अधिक अर्थपूर्ण बनाने के लिए स्ट्रिंग में एक विधि जोड़ सकते हैं:

String.metaClass.getNotBlank = { !delegate.allWhitespace }

जो आप करते हैं:

groovy:000> foo = ''
===> 
groovy:000> foo.notBlank
===> false
groovy:000> foo = 'foo'
===> foo
groovy:000> foo.notBlank
===> true

3
मेटाक्लास संशोधन करने के लिए सबसे अच्छी जगह कहाँ होगी?
cdeszaq
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.