2015-09-14 3 views
15

मुझे यकीन है कि यह अलग-अलग तरीकों से पहले पूछा जाना चाहिए - जैसा कि लक्षण हैऑनूल इतना आम है कि लोग इसे अलग-अलग लागू करते हैं। लेकिन मेरे पास सर्वोत्तम उपलब्ध दृष्टिकोण के संदर्भ में जिज्ञासापूर्ण क्वेरी है जो स्मृति और प्रदर्शन दोनों के लिए अच्छा है।स्ट्रिंग को सत्यापित करने का सबसे अच्छा तरीका खाली या शून्य है

1) नीचे खाली एक्सएमएल टैग के मामले में की तरह

return inputString==null || inputString.length()==0; 

2) एक नीचे ख्याल रखता है लेकिन ट्रिम कुछ प्रदर्शन + स्मृति

return inputString==null || inputString.trim().length()==0; 

3 खा सकते हैं सभी रिक्त स्थान के लिए खाते में नहीं है) पैटर्न मैचर में कनवर्ट किया गया (केवल तभी लगाया जाता है जब स्ट्रिंग शून्य शून्य लंबाई हो)

private static final Pattern p = Pattern.compile("\\s+"); 

return inputString==null || inputString.length()==0 || p.matcher(inputString).matches(); 

4) कोई अन्य?

+0

इनपुटस्ट्रिंग! = शून्य और इनपुटस्ट्रिंग.इस लक्षण(); अधिक परिष्कृत इनपुटस्ट्रिंग! = शून्य और इनपुटस्ट्रिंग.trim()। isEmpty(); – StackFlowed

+0

आप अपाचे स्ट्रिंग यूटिल्स [isEmpty()] का भी उपयोग कर सकते हैं (http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#isEmpty (java.lang। CharSequence)) यह शून्य जांच के साथ ही अंतरिक्ष जांच करता है। – StackFlowed

+0

'isEmpty' जावा 6 में "नया" है और पुराना कार्यान्वयन या जावा 5 संगत रहना चाहते हैं, लंबाई की जांच का उपयोग करना होगा। – zapl

उत्तर

10
if(myString==null || myString.isEmpty()){ 
    //do something 
} 
+1

अद्यतन धन्यवाद। मैं अनिवार्य रूप से उस गलती को हर बार बना देता हूं और फिर इसे संकलित करता हूं, त्रुटि देखता हूं, और महसूस करता हूं कि इस गलती को 9 बिलियनवें समय के लिए बनाया गया है :) – GregH

+1

@zapl या जावा में कथन शॉर्ट-सर्किट है। यदि MyString शून्य है –

+0

@JamesWierzba उत्तर 'if (s.isEmpty || s == null) था जो शून्य के मामले में एनपीई के साथ शॉर्ट सर्किट करता है :) भ्रम से बचने के लिए टिप्पणी हटा दी गई है। – zapl

8

शून्य मूल्यों को हटाने के लिए जावा 8 के रुख को दिखाने के लिए।

String s = Optional.ofNullable(myString).orElse(""); 
if (s.trim().isEmpty()) { 
    ... 
} 

अगर आप Optional<String> उपयोग कर सकते हैं भावना बनाता है।

+0

धन्यवाद जोओप, मुझे लगता है कि यह एक यह भी एक साफ समाधान है - यह मल्टी-स्पेस रिक्त तारों के लिए काम नहीं करेगा जैसे कि ""। – prash

+0

@prash: अच्छे क्रम के लिए एक ट्रिम जोड़ा गया, लेकिन अपाचे कॉमन्स नामुमकिन है। ;) –

2

अपाचे कॉमन्स लैंग StringUtils.isEmpty(String str) विधि जो सच रिटर्न है अगर तर्क खाली या शून्य है

5

गूगल अमरूद से यह एक जांच कर सकता है एक ही समय में "शून्य और खाली स्ट्रिंग" बाहर।

Strings.isNullOrEmpty("Your string."); 

Gradle साथ

dependencies { 
    compile 'com.google.guava:guava:20.0' 
} 
+0

क्या आप उल्लेख कर सकते हैं कि आप कौन सी लाइब्रेरी 'स्ट्रिंग्स क्लास' का उपयोग कर रहे हैं? "Google Guava" से –

+1

। मैंने पुस्तकालय के साथ जवाब संपादित किया है। –

+0

अमरूद निर्भरता आकार: 2.3 एमबी केवल यह जांचने के लिए कि क्या स्ट्रिंग शून्य या खाली है ... गुवा में मॉड्यूलरेशन की कमी है। – Aure77

0
Optional.ofNullable(label) 
.map(String::trim) 
.map(string -> !label.isEmpty) 
.orElse(false) 

या

TextUtils.isNotBlank(label);

Maven

<dependency> 
    <groupId>com.google.guava</groupId> 
    <artifactId>guava</artifactId> 
    <version>20.0</version> 
</dependency> 

के साथ एक निर्भरता जोड़ें

पिछले समाधान यदि नल नहीं की जाँच करें और आप और स्पष्ट रूप से एक ही समय

0

पर str Trimm देगा:

if (str == null || str.trim().length() == 0) { 
    // str is empty 
} 
0

अधिकांश मामलों में, StringUtils.isBlank(str) Apache Commons पुस्तकालय इसे हल होगा से। लेकिन यदि कोई मामला है, जहां इनपुट स्ट्रिंग की जांच की जा रही है तो उद्धरण के भीतर शून्य मान है, यह ऐसे मामलों की जांच करने में विफल रहता है।

एक उदाहरण लें जहां मेरे पास एक इनपुट ऑब्जेक्ट है जिसे String.valueOf(obj) API का उपयोग करके स्ट्रिंग में परिवर्तित किया गया था। यदि ओबीजे संदर्भ शून्य है, तो String.valueOf शून्य के बजाय "शून्य" देता है।

जब आप उपयोग करने का प्रयास करते हैं, StringUtils.isBlank("null"), एपीआई खराब तरीके से विफल हो जाती है, तो आपको यह सुनिश्चित करने के लिए कि आपके सत्यापन उचित हैं, आपको भी ऐसे उपयोग मामलों की जांच करनी पड़ सकती है।

संबंधित मुद्दे