दो स्ट्रिंग्स की तुलना कैसे करें? Java
स्ट्रिंग्स की तुलना करने के तरीके Java
Java दो स्ट्रिंग्स की तुलना करने के लिए आप विभिन्न विधियाँ प्रदान कर सकते हैं Java. स्ट्रिंग तुलना Java एक विशेषता है जो वर्णों के अनुक्रम को एक स्ट्रिंग से मेल कराती है।
स्ट्रिंग्स की तुलना करना सीखने के लिए Java, आप निम्नलिखित वर्गों द्वारा प्रदान की गई विधियों का उपयोग कर सकते हैं।
- स्ट्रिंग वर्ग से Java.lang पैकेज.
- ऑब्जेक्ट्स वर्ग से Java.util पैकेज.
- org.apache.commons.lang3 पैकेज से StringUtils वर्ग.
इनमे से ज्यादातर Java स्ट्रिंग्स की तुलना करने के तरीकों में केस को अनदेखा करने के उपाय हैं। इसमें Java इस ट्यूटोरियल में, आप विभिन्न विधियों के बारे में जानेंगे जिनका उपयोग आप दो स्ट्रिंग्स की तुलना करने के लिए कर सकते हैं।
विधि 1: स्ट्रिंग equals() विधि
RSI Java तार equals() विधि समान स्ट्रिंग मानों के लिए दो स्ट्रिंग ऑब्जेक्ट्स की तुलना करता है।
सिंटेक्स:
public boolean equals(Object anObject)
equals() विधि पैरामीटर:
anObject – स्ट्रिंग की तुलना करने के लिए तर्क स्ट्रिंग.
equals() विधि वापसी प्रकार
- यदि प्रदान किया गया स्ट्रिंग लिटरल प्रथम स्ट्रिंग के समान है तो true लौटाता है।
- यदि प्रथम स्ट्रिंग तर्क स्ट्रिंग के समान नहीं है तो false लौटाता है।
उदाहरण:
public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: "+stringOne.equals(stringTwo)); String stringThree = "GURU99"; System.out.println("is Guru99 equal to GURU99: "+stringOne.equals(stringThree)); } }
अपेक्षित उत्पादन:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
स्पष्टीकरण:
- आपको अंतिम आउटपुट में false मिला क्योंकि निर्दिष्ट ऑब्जेक्ट का केस अलग है।
नोट: केस-सेंसिटिव स्ट्रिंग तुलना के लिए स्ट्रिंग इक्वल्स विधि का उपयोग करें। अलग-अलग स्ट्रिंग मानों वाले स्ट्रिंग ऑब्जेक्ट की तुलना करने के लिए “equalsIgnoreCase” विधि का उपयोग करें।
विधि 2: ऑब्जेक्ट equals() विधि
RSI Java ऑब्जेक्ट बराबर() विधि दो स्ट्रिंग ऑब्जेक्ट्स की तुलना करके यह पता लगाती है कि क्या उनके मान समान हैं।
सिंटेक्स:
public static boolean equals(Object a, Object b)
equals() विधि पैरामीटर
a – प्रथम स्ट्रिंग ऑब्जेक्ट के लिए तर्क स्ट्रिंग.
b – दूसरे स्ट्रिंग ऑब्जेक्ट के लिए तर्क स्ट्रिंग.
equals() विधि वापसी प्रकार
- यदि स्ट्रिंग लिटरल बराबर हैं तो true लौटाता है। दो तर्कों में शून्य मान पास करने पर भी true लौटाएगा।
- यदि स्ट्रिंग लिटरल समान नहीं हैं तो false लौटाता है।
उदाहरण:
import java.util.Objects; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringOne, stringTwo)); String stringThree = null; String stringFour = null; System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringThree, stringFour)); } }
आउटपुट:
is Guru99 equal to Guru99: true is Guru99 equal to Guru99: true
स्पष्टीकरण:
इस उदाहरण से, आप देख सकते हैं कि आउटपुट सत्य का बूलियन मान है क्योंकि तुलना की गई स्ट्रिंग्स समान हैं।
विधि 3: स्ट्रिंग CompareTo() विधि
RSI Java स्ट्रिंग तुलना करें() विधि दो स्ट्रिंग्स की तुलना वर्णमाला क्रम में करती है। इसे आमतौर पर लेक्सिकोग्राफ़िक क्रम कहा जाता है।
सिंटेक्स:
public int compareTo(String str)
CompareTo() विधि पैरामीटर
str – वर्तमान स्ट्रिंग के साथ तुलना करने के लिए स्ट्रिंग.
CompareTo() विधि लौटाती है
- 0 – यदि निर्दिष्ट ऑब्जेक्ट वर्तमान स्ट्रिंग के बराबर है तो शून्य लौटाता है।
- < 0 – यदि यह स्ट्रिंग निर्दिष्ट ऑब्जेक्ट से छोटी है तो शून्य से छोटी संख्या लौटाता है।
- > 0 – यदि यह स्ट्रिंग प्रदान की गई स्ट्रिंग से अधिक है तो शून्य से बड़ी संख्या लौटाता है।
उदाहरण:
public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + stringOne.compareTo(stringTwo)); String stringThree = "GURU99"; // u = 117, U = 85, result = 117-85 = 32 System.out.println("is Guru99 equal to GURU99: " + stringOne.compareTo(stringThree)); } }
अपेक्षित उत्पादन:
is Guru99 equal to Guru99: 0 is Guru99 equal to GURU99: 32
स्पष्टीकरण:
पहला परिणाम शून्य मान लौटाता है क्योंकि पहली और दूसरी स्ट्रिंग बराबर हैं।
दूसरा परिणाम बत्तीस का मान लौटाता है क्योंकि अक्षर भिन्न हैं।
नोट: मामलों को अनदेखा करने के लिए, आप “compareToIgnoreCase” विधि का उपयोग कर सकते हैं।
विधि 4: स्ट्रिंगयूटिल्स equals() विधि
RSI Java स्ट्रिंगयूटिल्स बराबर() विधि दो वर्ण अनुक्रमों की समानता की तुलना करती है।
सुनिश्चित करें कि आपने अपने प्रोग्राम में “org.apache.commons.lang3” लाइब्रेरी जोड़ी है। यह आपको StringUtil विधियों का उपयोग करके स्ट्रिंग्स की तुलना करने की अनुमति देगा।
मावेन परियोजनाओं के लिए, इसका उपयोग करें गाइड प्रोजेक्ट में लाइब्रेरी जोड़ने के लिए.
हालाँकि, यदि आप किसी भी बिल्ड टूल के बिना लाइब्रेरी जोड़ना चाहते हैं, तो इसका उपयोग करें गाइड.
सिंटेक्स:
public static boolean equals(CharSequnce cs1, CharSequence cs2)
StringUtils equals() विधि पैरामीटर
- cs1 – प्रथम तर्क के लिए वर्णों का अनुक्रम.
- cs2 - दूसरे तर्क के लिए वर्णों का अनुक्रम.
StringUtils equals() विधि लौटाती है
- यदि स्ट्रिंग तुलना बराबर है तो true लौटाता है। यह तब लागू होता है जब आप दो तर्कों में शून्य मान पास करते हैं।
- यदि स्ट्रिंग तुलना समान नहीं है तो गलत लौटाता है।
उदाहरण:
import org.apache.commons.lang3.StringUtils; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + StringUtils.equals(stringOne, stringTwo)); String stringThree = "GURU99"; System.out.println("is Guru99 equal to GURU99: " + StringUtils.equals(stringOne, stringThree)); } }
आउटपुट:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
स्पष्टीकरण:
चूँकि पहली और दूसरी स्ट्रिंग की सामग्री समान है, इसलिए परिणाम सत्य लौटाता है।
आप केस को अनदेखा करने के लिए “equalsIgnoreCase” विधि का उपयोग कर सकते हैं।
विधि 5: StringUtils equalsAny() विधि
RSI Java स्ट्रिंगयूटिल्स equalsAny() विधि जाँचती है कि क्या तर्कों में कोई स्ट्रिंग मौजूद है।
सिंटेक्स:
public static boolean equalsAny(CharSequence string, Charsequence… searchStrings)
StringUtils equalsAny() विधि पैरामीटर
- स्ट्रिंग - पहले तर्क के लिए स्ट्रिंग मान। तर्क का मान शून्य भी हो सकता है।
- searchStrings - विधि के लिए स्ट्रिंग तर्कों का एक सेट यह पता लगाने के लिए कि क्या पहला तर्क स्ट्रिंग मौजूद है।
StringUtils equalsAny() विधि लौटाती है
- यदि मिलान करने के लिए स्ट्रिंग खोज स्ट्रिंग की चर संख्या में मौजूद है, तो true लौटाता है। यह तब लागू होता है जब दोनों तर्क शून्य हों।
- यदि मिलान की जाने वाली स्ट्रिंग, खोज स्ट्रिंग की परिवर्तनीय संख्या में किसी भी स्ट्रिंग से मेल नहीं खाती है, तो गलत लौटाता है।
उदाहरण:
import org.apache.commons.lang3.StringUtils; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String[] stringTwo = new String[] { "Guru99", "JavaGuru99" }; System.out.println("is Guru99 available: " + StringUtils.equalsAny(stringOne, stringTwo)); String[] stringThree = new String[] { "GURU99", "JavaGuru99" }; System.out.println("is GURU99 available: " + StringUtils.equalsAny(stringOne, stringThree)); } }
आउटपुट:
is Guru99 available: true is GURU99 available: false
स्पष्टीकरण:
चूँकि पहली स्ट्रिंग और दूसरी स्ट्रिंग की सामग्री बराबर है, इसलिए परिणाम सत्य लौटाता है। आप केस को अनदेखा करने के लिए “equalsAnyIgnoreCase” विधि का उपयोग कर सकते हैं।
विधि 6: == ऑपरेटर का उपयोग करना
स्ट्रिंग्स पर == ऑपरेटर यह जाँचता है कि क्या ऑब्जेक्ट संदर्भों का पता समान है।
उदाहरण:
public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 == to Guru99: " + (stringOne == stringTwo)); String stringThree = "GURU99"; System.out.println("is Guru99 == to GURU99: " + (stringOne == stringThree)); } }
अपेक्षित उत्पादन:
is Guru99 == to Guru99: true is Guru99 == to GURU99: false
स्पष्टीकरण:
- पहला परिणाम सत्य का बूलियन मान लौटाता है। समान सामग्री वाले स्ट्रिंग्स को एक ही स्ट्रिंग पूल में जोड़ा जाता है, इसलिए स्ट्रिंग एक पता साझा करती है।
- दूसरा परिणाम गलत का बूलियन मान लौटाता है। ऑब्जेक्ट्स में अलग-अलग सामग्री होती है, जिसके परिणामस्वरूप अन्य स्ट्रिंग पूल होते हैं। इसका मतलब है कि स्ट्रिंग्स में अलग-अलग ऑब्जेक्ट संदर्भ होते हैं; इसलिए आउटपुट गलत है।
विधि 7: दो स्ट्रिंग्स की तुलना करने के लिए एक कस्टम विधि बनाना Java
एक ऐसी विधि बनाएं जो लेक्सिकोग्राफिक क्रम का उपयोग करके दो स्ट्रिंग्स की तुलना करे।
सिंटेक्स:
public static int compareTwoStrings(String str1, String str2)
कस्टम विधि पैरामीटर
- str1 – तुलना करने हेतु स्ट्रिंग.
- str2 – तुलना करने के लिए स्ट्रिंग.
कस्टम विधि रिटर्न
- 0 – यदि पहली स्ट्रिंग दूसरी स्ट्रिंग के बराबर है तो शून्य लौटाता है।
- < 0 – यदि पहली स्ट्रिंग दूसरी स्ट्रिंग से छोटी है तो शून्य से छोटी संख्या लौटाता है।
- > 0 – यदि पहली स्ट्रिंग दूसरी स्ट्रिंग से बड़ी है तो शून्य से बड़ी संख्या लौटाता है।
उदाहरण:
public class CompareTwoStrings { public static int compareTwoStrings(String stringOne, String stringTwo) { int lengthOfStringOne = stringOne.length(); int lengthOfStringTwo = stringTwo.length(); int minStringLength = Math.min(lengthOfStringOne, lengthOfStringTwo); for (int i = 0; i < minStringLength; i++) { char stringOneCharValue = stringOne.charAt(i); char stringTwoCharValue = stringTwo.charAt(i); if (stringOneCharValue != stringTwoCharValue) { return stringOneCharValue - stringTwoCharValue; } } if (lengthOfStringOne != lengthOfStringTwo) { return lengthOfStringOne - lengthOfStringTwo; } else { return 0; } } public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + compareTwoStrings(stringOne, stringTwo)); } }
अपेक्षित उत्पादन:
is Guru99 equal to Guru99: 0
स्पष्टीकरण:
परिणाम ने शून्य मान लौटाया, जिसका अर्थ है कि कस्टम फ़ंक्शन अपेक्षानुसार काम कर रहा है।
सारांश:
RSI Java दो स्ट्रिंग्स की तुलना करने की विधि का उपयोग निम्नलिखित कारकों पर निर्भर करता है।
- अपनी विधि पर नियंत्रण रखने की इच्छा। इस मामले में, एक कस्टम विधि बनाएँ।
- आप लीगेसी कोड का उपयोग नहीं कर सकते. Java 6 और उससे कम।
- वह विधि जिसका प्रदर्शन इष्टतम है।
- आप जिस प्रकार के डेटा के साथ काम कर रहे हैं। उदाहरण के लिए, चर तर्कों के एक सेट से एक स्ट्रिंग का मिलान करना।
- आउटसोर्स लाइब्रेरी द्वारा प्रदान की गई सुविधाएँ। उदाहरण के लिए, स्ट्रिंगयूटिल्स लाइब्रेरी स्ट्रिंग्स की तुलना करने के लिए अलग-अलग तरीके प्रदान करती है।