StringUtils का परिचय

StringUtils सबसे अधिक इस्तेमाल किया जाने वाला Apache Commons वर्ग है। इसमें विभिन्न उपयोगिताओं और विधियां शामिल हैं जो डेवलपर्स को बॉयलरप्लेट लिखने से बचने में मदद करती हैं या बुनियादी संचालन के लिए केवल बोझल कोड हैं।

StringUtils वर्ग में कई विधियों में उनके java.lang.String समतुल्य हैं , लेकिन java.lang.String विधियों के विपरीत , शून्य-सुरक्षित हैं। इसका मतलब यह है कि सबसे अप्रत्याशित क्षण में NullPointerException को नहीं फेंका जाता है ।

Apache Commons में कई विधियाँ हैं, और हम कुछ सबसे सामान्य रूप से उपयोग की जाने वाली विधियों को देखेंगे।

StringUtils विधियों की सूची:

खाली है() जाँचता है कि क्या कोई स्ट्रिंग खाली है
बराबर () तार की तुलना करता है
तुलना करना() तार की तुलना करता है
के सूचकांक() एक स्ट्रिंग में एक सबस्ट्रिंग ढूँढना
lastIndexOf () एक स्ट्रिंग में एक सबस्ट्रिंग ढूँढना
रोकना() जांचता है कि कोई सबस्ट्रिंग स्ट्रिंग में है या नहीं
सम्‍मिलित इग्‍नोरकेस () एक स्ट्रिंग में एक सबस्ट्रिंग की घटना की जाँच करता है, केस को अनदेखा करता है
सम्‍मिलित है कोई भी () जांचता है कि स्ट्रिंग में कहीं भी सबस्ट्रिंग होती है या नहीं
सम्‍मिलित नहीं है () जांचता है कि स्ट्रिंग में कहीं भी सबस्ट्रिंग होती है या नहीं
सम्‍मिलित है () जांचता है कि कोई सबस्ट्रिंग स्ट्रिंग में है या नहीं
सबस्ट्रिंग () एक सबस्ट्रिंग प्राप्त करना
विभाजित करना() एक स्ट्रिंग को सबस्ट्रिंग में विभाजित करना
जोड़ना() सबस्ट्रिंग्स को जोड़ना
निकालना() एक सबस्ट्रिंग निकाल रहा है
बदलना() सबस्ट्रिंग बदलें
काउंटमैच () मैचों की संख्या की गिनती

StringUtils.isEmpty() और StringUtils.isBlank()

किसी स्ट्रिंग में कोई टेक्स्ट है या नहीं, यह जांचने के लिए दोनों विधियों का उपयोग किया जाता है। अगर स्ट्रिंग वास्तव में खाली है तो वे सच हो जाते हैं। इसके अतिरिक्त, isBlank() भी सही होगा यदि स्ट्रिंग में केवल रिक्त स्थान हैं।

उनकी अपनी प्रतिलोम विधियाँ भी होती हैं: isNotEmpty() और isNotBlank()

आइए देखें कि आप isEmpty() को इसके java.lang.String.isEmpty() समकक्ष के साथ-साथ isBlank() के साथ कैसे उपयोग कर सकते हैं :

String nullValue = null;
String emptyValue = "";
String blankValue = "\n \t   \n";

if(StringUtils.isEmpty(emptyValue)) {
   System.out.println("emptyValue is emptyValue");
}

if(StringUtils.isBlank(blankValue)) {
   System.out.println("blankValue is blankValue");
}

if(!nullValue.isEmpty()) {
   System.out.println("nullString isn't null");
}

यहाँ String प्रकार के तीन चर हैं । एक शून्य को इंगित करता है , दूसरा शून्य नहीं है लेकिन इसमें कोई सामग्री नहीं है (एक खाली स्ट्रिंग), और तीसरा खाली नहीं है लेकिन एक खाली परिणाम प्रिंट करेगा।

इस कोड को चलाने के परिणामस्वरूप:

emptyValue is emptyValue
blankValue is blankValue
Exception in thread "main" java.lang.NullPointerException

Java.lang.String में निर्मित isEmpty() विधि शून्य सुरक्षित नहीं है । यदि आप यह जांचने का प्रयास करते हैं कि क्या यह खाली है, तो आपको आसानी से एक NullPointerException मिल जाएगी , क्योंकि आप विधि को एक अशक्त संदर्भ पर कॉल करते हैं । संदर्भ शून्य है या नहीं, यह पहले से जांचना आवश्यक होगा:

String nullValue = null;
String emptyValue = "";
String blankValue = "\n \t   \n";

if(StringUtils.isEmpty(emptyValue)) {
   System.out.println("emptyValue is emptyValue");
}

if(StringUtils.isBlank(blankValue)) {
   System.out.println("blankValue is blankValue");
}

if(nullValue != null && !nullValue.isEmpty()) {
   System.out.println("nullString isn't null");
}

अब इसका परिणाम है:

emptyValue is emptyValue
blankValue is blankValue

और अगर हम इन तरीकों का परीक्षण करते हैंअशक्त स्ट्रिंग:

String nullValue = null;

if(StringUtils.isEmpty(nullValue)) {
   System.out.println("nullValue is emptyValue");
}

if(StringUtils.isBlank(nullValue)) {
   System.out.println("nullValue is blankValue");
}

तब हमें मिलता है:

nullValue is emptyValue
nullValue is blankValue

StringUtils विधियां शून्य सुरक्षित हैं और अपेक्षित परिणाम उत्पन्न करती हैं, भले ही वे शून्य पास हो जाएं ।

StringUtils.equals ()

यह विधि दो तारों की तुलना करती है और यदि वे समान हैं या यदि दोनों संदर्भ शून्य की ओर इशारा करते हैं, तो सही है, लेकिन ध्यान रखें कि यह विधि केस संवेदी है।

आइए देखें कि यह कैसे काम करता है:

System.out.println(StringUtils.equals(null, null));
System.out.println(StringUtils.equals(null, "some information"));
System.out.println(StringUtils.equals("some information", null));
System.out.println(StringUtils.equals("some information",  "some information"));
System.out.println(StringUtils.equals("some additional information", "some information"));

परिणाम:

true
false
false
true
false

StringUtils के equals() मेथड की तुलना java.lang.String.equals() से करने के लिए :

String nullValue = null;

System.out.println(StringUtils.equals(nullValue, null));
System.out.println(StringUtils.equals(nullValue, "some information"));

System.out.println(nullValue.equals(null));
System.out.println(nullValue.equals("some information"));

यह आपको वापस लाता है:

true
false
Exception in thread "main" java.lang.NullPointerException

दोबारा, एक शून्य संदर्भ पर एक विधि को कॉल करने से NullPointerException परिणाम होता है , और आपको यह जांचने की आवश्यकता होगी कि संदर्भ चर का उपयोग करने से पहले शून्य है या नहीं।

StringUtils.compare ()

इस पद्धति की घोषणा इस तरह दिखती है:

public static int compare(final String str1, final String str2)

यह विधि दो स्ट्रिंग्स की शाब्दिक रूप से तुलना करती है, जैसा कि java.lang.String.compareTo() विधि करती है , वापस लौटती है:

  • 0 अगर str1 str2 के बराबर है (या दोनों शून्य हैं)
  • मान 0 से कम है यदि str1 str2 से कम है
  • मान 0 से अधिक है यदि str1 str2 से अधिक है

लेक्सिकोग्राफिकल ऑर्डर डिक्शनरी ऑर्डर है। आइए देखें कि हम इसे अपने कार्यक्रम में कैसे उपयोग कर सकते हैं:

System.out.println(StringUtils.compare(null, null));
System.out.println(StringUtils.compare(null , "codeGym"));
System.out.println(StringUtils.compare("codeGym", null));
System.out.println(StringUtils.compare("codeGym", "CODEGYM"));
System.out.println(StringUtils.compare("codeGym", "codeGym"));

हम पाते हैं:

0
-1
1
32
0

नोट: एक शून्य मान को गैर- शून्य मान से कम माना जाता है । दो शून्य मानों को समान माना जाता है।

यह जांचना कि क्या एक स्ट्रिंग में एक और सबस्ट्रिंग है

ऐसा करने के लिए, StringUtils के 5 तरीके हैं:

  • रोकना()
  • सम्‍मिलित इग्‍नोरकेस ()
  • सम्‍मिलित है कोई भी ()
  • सम्‍मिलित नहीं है ()
  • सम्‍मिलित है ()

सम्‍मिलित है () विधि इस बात पर निर्भर करती है कि खोज अनुक्रम किसी अन्य अनुक्रम में समाहित है या नहीं

यदि इस तरह की विधि में शून्य पारित किया जाता है, तो यह झूठी वापसी करेगा । यदि non- null पारित हो गया है , तो विधि पास की गई वस्तु पर java.lang.String.indexOf(String str) को कॉल करेगी।

उदाहरण:

String value = "CodeGym is cool";

System.out.println(StringUtils.contains(null, "a"));
System.out.println(StringUtils.contains(value, "CodeGym"));
System.out.println(StringUtils.contains(value, "C++"));
System.out.println(StringUtils.contains(value, "codegym"));

विधि केस संवेदी है, इसलिए अंतिम कॉल भी गलत होगी :

false
true
false
false

यदि पहले तर्क के रूप में पारित स्ट्रिंग में 2-एन तर्कों में पारित सबस्ट्रिंग में से कम से कम एक सबस्ट्रिंग शामिल है, तो इसमें कोई भी () विधि सही होती है ।

उदाहरण:

String value = "CodeGym is cool";
System.out.println(StringUtils.containsAny(value, "cool", "c00l", "bro", "hello"));

प्रदर्शित करेगा:

true

यह तरीका केस सेंसिटिव भी है।

सम्‍मिलित कोई नहीं () विधि

जब आपको यह जांचने की आवश्यकता होती है कि एक निश्चित स्ट्रिंग में सूची से कुछ भी नहीं है, तो आप इसमें कोई नहीं () विधि का उपयोग कर सकते हैं । पहला पैरामीटर एक स्ट्रिंग है, और निम्नलिखित पैरामीटर स्ट्रिंग्स हैं जो लक्ष्य सिंक में नहीं होनी चाहिए।

उदाहरण:

String s = "CodeGym is cool";
System.out.println(StringUtils.containsNone(s, 'g', 'a'));

कंसोल आउटपुट:

false

सबस्ट्रिंग्स के साथ काम करना

सबस्ट्रिंग्स के साथ काम करना स्ट्रिंग क्लास के तरीकों के साथ काम करने के समान है :

substring(String str, int start)
substring (String str, int start, int end)

ये विधियाँ स्ट्रिंग str से एक सबस्ट्रिंग लौटाती हैं । स्ट्रिंग दो सूचकांकों द्वारा दी गई है: प्रारंभ और अंत । और हमेशा की तरह जावा में, श्रेणी का अंतिम वर्ण end-1 है । इन तरीकों का क्या फायदा है?

यदि आप इस तरह की विधि के लिए शून्य पास करते हैं , तो यह अपवाद फेंकने के बजाय बस शून्य हो जाएगा। ये विधियाँ नकारात्मक सूचकांक मूल्यों का समर्थन करती हैं। इस मामले में, स्ट्रिंग को बंद लूप माना जाता है। अंतिम वर्ण के बाद पहला वर्ण आता है, और इसी तरह आगे भी।

आइए देखें कि हम इसका उपयोग कैसे कर सकते हैं:

System.out.println(StringUtils.substring("lets java", 2, 6));
System.out.println(StringUtils.substring("lets java", -8));
System.out.println(StringUtils.substring(null, 3));

उपरोक्त कोड चलाने से हमें मिलता है:

ts j
ets java
null

स्ट्रिंगयूटिल्स.स्प्लिट ()

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

String myData = "Address, City, State, Zip, Phone, Email, Password";

System.out.println(Arrays.toString(StringUtils.split(myData, ',')));
System.out.println(Arrays.toString(StringUtils.split(null, '.')));
System.out.println(Arrays.toString(StringUtils.split("", '.')));

परिणाम:

[Address,  City,  State,  Zip,  Phone,  Email,  Password]
null
[]

स्ट्रिंगयूटिल्स.जॉइन ()

ज्वाइन () विधि आपको स्ट्रिंग्स की एक सरणी को एक स्ट्रिंग में जोड़ने की अनुमति देती है। उसी समय, एक विशेष विभाजक वर्ण इसे पास किया जा सकता है, जो परिणामी स्ट्रिंग में सबस्ट्रिंग के बीच जोड़ा जाएगा। और अगर विधि को शून्य पास किया जाता है , तो यह शून्य वापस आ जाएगा ।

यह विधि विभाजन () विधि के ठीक विपरीत है । आइए इस सरल उदाहरण को देखें:

String myData = "Address, City, State, Zip, Phone, Email, Password";

String[] myString =  StringUtils.split(myData, ',');
System.out.println(StringUtils.join(myString, '-'));

उपरोक्त कोड चलाने से हमें मिलता है:

Address- City- State- Zip- Phone- Email- Password

स्ट्रिंगयूटिल्स.रिप्लेस ()

एक स्ट्रिंग के भीतर एक स्ट्रिंग के लिए खोज करता है, अगर यह मौजूद है तो इसे ढूंढता है, और इसकी सभी घटनाओं को एक नई स्ट्रिंग के साथ बदल देता है।

इस पद्धति की घोषणा इस तरह दिखती है:

public static String replace(final String text, final String searchString, final String replacement)

यदि पाठ में खोज स्ट्रिंग नहीं मिलती है, तो कुछ नहीं होगा और पाठ वही रहेगा। उसी तर्क के बाद, यदि पाठ शून्य है , तो यह विधि शून्य हो जाती है । यदि आप एक अशक्त स्ट्रिंग की तलाश कर रहे हैं या एक सबस्ट्रिंग को अशक्त के साथ बदल रहे हैं , तो विधि मूल स्ट्रिंग को वापस कर देगी।

आइए इस विधि को आजमाएं:

String value = "CodeGym is the best";
System.out.println(StringUtils.replace(value, "best", "cool"));

परिणाम:

CodeGym is the cool