2013-02-07 90 views
10

मैं उदाहरण विधियों पर भरोसा नहीं करना चाहता हूं कि जिस स्ट्रिंग पर विधि कहा जाता है वह शून्य हो जाता है। .NET में मैं केवल स्थिर स्ट्रिंग का उपयोग करता हूं। कॉम्पैयर (स्ट्रिंग, स्ट्रिंग, बूल) विधि। जावा जावा जैसी समान अंतर्निहित "शून्य-सुरक्षित" स्ट्रिंग प्रदान करता है या क्या मुझे अपना खुद का कार्यान्वयन करना पड़ता है?जावा एक अंतर्निहित स्थैतिक स्ट्रिंग प्रदान करता है। कॉम्पैयर विधि? स्ट्रिंग्स की तुलना करते समय

+3

पुस्तकालयों में यह है। मुझे लगता है कि एक अपाचे स्ट्रिंगउट्स है, और एंड्रॉइड में टेक्स्ट यूटिल्स – njzk2

उत्तर

8

नहीं, जेडीके con con इस तरह की उपयोगिता टाइन। हालांकि कई बाहरी पुस्तकालय हैं जो ऐसा करते हैं। उदाहरण के लिए org.apache.commons.lang.StringUtils शून्य-सुरक्षित equals(String, String) और equalsIgnoreCase(String, String) प्रदान करता है। अमरूद में भी समान उपयोगिताएं हैं।

1

मुझे लगता है कि जवाब नहीं है, तो आप शायद पहले

if(myString != null && myString.equals("string")) { 
    // do something 
} 

Here some more examples

यह जाँच करने के लिए के रूप में अन्य लोगों ने बताया अपाचे कॉमन्स इस, और यह भी वसंत है:

StringUtils.hasLength()

if(StringUtils.hasLength(myString)) { 
    // do something 
} 
2

ऐसा नहीं है। Apache Commons 'StringUtils.equals() यह इस तरह से है:

public static boolean equals(String str1, String str2) { 
    return str1 == null ? str2 == null : str1.equals(str2); 
} 
-2

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#compareTo(java.lang.String)

तुलना नहीं है जो किसी पूर्णांक रिटर्न के लिए। यह भी बराबर है कि एक बुलियन लौटाता है। यदि आपके पास स्ट्रिंग उदाहरण है तो यह निष्पादित करने में सक्षम होना चाहिए। यदि आप example.equals (शून्य) पास करते हैं तो यह झूठी वापसी करेगा। यदि आपका उदाहरण शून्य है तो आपको एक शून्य सूचक मिलेगा।

public class App 
{ 

public static void main(String[] args) 
{ 
    String myString = "test"; 

    if(myString.equals(null)) 
    { 
     System.out.println("Its NUll"); 
    }else 
    { 
     System.out.println("Not Equal"); 
    } 

} 

} 
+1

-1 है: प्रश्न स्ट्रिंग्स की तुलना करने के लिए स्ट्रिंग्स की तुलना करने के लिए ** स्थिर **, शून्य-सुरक्षित अंतर्निहित विधि के बारे में था। –

2

स्ट्रिंग प्रस्ताव एक compareTo method है, जो वैसे भी अशक्त-सुरक्षित नहीं है (अर्थात आप वास्तव में वस्तु पर comapreTo विधि कॉल करने से पहले शून्य मान के लिए जांच करने की आवश्यकता है)।

आप क्या कर सकते हैं इस

class StringComparator implements Comparator<String> { 

    public int compare(String s1, String s2) { 
     if (s1 != null) { 
      return s1.compareTo(s2); 
     } else { 
      if (s2 == null) { 
       return 0; 
      } else { 
       return -1; 
      } 
    } 

की तरह अपने खुद के तुलनाकारी लिखने संपत्ति सत्यापित करने के लिए है बस करो:

Comparator<String> comp = new Comparator<String>(); 
System.out.println(comp.compare(s1, s2); 

मैं वास्तव में कोड का परीक्षण नहीं किया, इसलिए इसे ले एक सामान्य उदाहरण के रूप में। लाभ यह है कि, भले ही आपको शून्य मूल्य की जांच करने की आवश्यकता हो, फिर भी आप इसे एक बार लिख सकते हैं और इसे कई बार उपयोग कर सकते हैं।

आप स्ट्रिंग क्लास के अंदर a built in Comparator पर भी एक नज़र डाल सकते हैं।

+0

हां, मैं खुद को इस नए कोड को हर नई परियोजना में जोड़ता हूं। ऐसा लगता है कि शून्य जांच को संभालने के लिए 'Strings.compare (बाएं, दाएं)' होना चाहिए – Kirby

1

यदि तुलना करने के तारों में से एक स्थिर है तो आप equals का उपयोग कर सकते हैं क्योंकि यह null को संभालता है।

if("string".equals(mystring)) { 
    // do something 
} 

आप 2 चर है तो आप अपने खुद के स्थिर विधि लिख सकते हैं:

public static boolean stringEquals(String s1, String s2) { 
    if (s1 == null) { 
     return s2 == null; 
    } 
    return s1.equals(s2); 
} 
1

एक समान प्रश्न यहाँ How to simplify a null-safe compareTo() implementation?

जो संत जैसी अपाचे कॉमन्स का उपयोग करने की सलाह देता है नहीं है ObjectUtils वर्ग

result = ObjectUtils.compare(left, right); 

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

  • कोई संबंधित समस्या नहीं^_^