- 1 1. परिचय: जावा में स्ट्रिंग सर्च क्यों महत्वपूर्ण है
- 2 2. contains() मेथड की बुनियादी सिंटैक्स और विशेषताएँ
- 3 3. व्यावहारिक उपयोग उदाहरण और महत्वपूर्ण विचार
- 4 4. contains() के साथ अक्सर तुलना किए जाने वाले मेथड्स
- 5 5. सामान्य उपयोग केस और नमूना कोड
- 6 6. प्रदर्शन संबंधी विचार
- 7 7. अन्य प्रोग्रामिंग भाषाओं के साथ तुलना
- 8 8. अक्सर पूछे जाने वाले प्रश्न (FAQ)
- 8.1 प्रश्न 1. क्या contains() केस‑सेंसिटिव है?
- 8.2 प्रश्न 2. नियमित अभिव्यक्तियों (regex) का उपयोग करके आंशिक मिलान कैसे जांचें?
- 8.3 Q3. यदि मैं contains() को null पर कॉल करता हूँ तो क्या होता है?
- 8.4 Q4. यदि मैं contains() को एक खाली स्ट्रिंग (“”) पास करता हूँ तो क्या होता है?
- 8.5 Q5. क्या contains() एक साथ कई कीवर्ड खोज सकता है?
- 8.6 Q6. कब contains() बनाम indexOf() का उपयोग करना चाहिए?
- 9 9. निष्कर्ष
1. परिचय: जावा में स्ट्रिंग सर्च क्यों महत्वपूर्ण है
स्ट्रिंग मैनिपुलेशन जावा में प्रोग्रामिंग करते समय सबसे अधिक उपयोग किए जाने वाले ऑपरेशनों में से एक है।
चाहे उपयोगकर्ता इनपुट की जाँच हो, फ़ाइल सामग्री का पार्सिंग हो, या विशिष्ट कीवर्ड की खोज हो, अक्सर आपको यह निर्धारित करना पड़ता है कि कोई विशेष शब्द दिए गए स्ट्रिंग में मौजूद है या नहीं।
इन आवश्यकताओं को पूरा करने के लिए जावा एक सुविधाजनक मेथड contains() प्रदान करता है।
इस मेथड के साथ, आप आसानी से यह पता लगा सकते हैं कि एक स्ट्रिंग आंशिक रूप से दूसरी स्ट्रिंग को शामिल करती है या नहीं।
उदाहरण के लिए, यदि आप यह जांचना चाहते हैं कि कोई त्रुटि संदेश किसी विशिष्ट कीवर्ड को शामिल करता है या नहीं, contains() आपको एक ही लाइन के कोड में यह करने की अनुमति देता है।
विशेष रूप से बड़े पैमाने पर टेक्स्ट वाले परिदृश्यों में—जैसे वेब एप्लिकेशन, API प्रोसेसिंग, या लॉग विश्लेषण—contains() मेथड कोड की पठनीयता और रखरखाव को काफी सुधारता है।
हालाँकि, केस सेंसिटिविटी और null होने की संभावना जैसी महत्वपूर्ण बातों पर भी ध्यान देना आवश्यक है।
यह लेख जावा के contains() मेथड को विस्तार से समझाता है—बुनियादी उपयोग, सामान्य गलतियों, अन्य मेथड्स से अंतर, और व्यावहारिक अनुप्रयोगों तक।
हमारा लक्ष्य केवल शुरुआती लोगों के लिए ही नहीं, बल्कि वास्तविक प्रोजेक्ट्स में जावा का सक्रिय उपयोग करने वाले डेवलपर्स के लिए भी उपयोगी जानकारी प्रदान करना है।
2. contains() मेथड की बुनियादी सिंटैक्स और विशेषताएँ
जावा का contains() मेथड यह निर्धारित करता है कि एक स्ट्रिंग आंशिक रूप से दूसरी स्ट्रिंग को शामिल करती है या नहीं।
इसकी सिंटैक्स बहुत सरल है, फिर भी यह अत्यधिक व्यावहारिक है और दैनिक प्रोग्रामिंग कार्यों में अक्सर उपयोग किया जाता है।
बुनियादी सिंटैक्स
boolean result = targetString.contains(searchString);
यह मेथड String क्लास का हिस्सा है और एक CharSequence (आमतौर पर String) को अपने आर्ग्यूमेंट के रूप में लेता है।
इसका रिटर्न वैल्यू boolean होता है: यदि लक्ष्य स्ट्रिंग दिए गए सबस्ट्रिंग को शामिल करती है तो true, अन्यथा false।
नमूना कोड
String message = "Java programming is fun!";
boolean hasKeyword = message.contains("programming");
System.out.println(hasKeyword); // Output: true
उपरोक्त उदाहरण में, सबस्ट्रिंग "programming" लक्ष्य स्ट्रिंग में मौजूद है, इसलिए contains() true लौटाता है।
मेथड की विशेषताएँ
- केवल आंशिक मिलान की जाँच करता है: यदि आपको पूर्ण मिलान चाहिए, तो
equals()का उपयोग करें। - केस-सेंसिटिव: उदाहरण के लिए,
"Java"और"java"को अलग माना जाता है (विवरण बाद में दिया गया है)। - रेगुलर एक्सप्रेशन का समर्थन नहीं करता: क्योंकि यह केवल स्ट्रिंग की उपस्थिति की जाँच करता है, पैटर्न मिलान के लिए
matches()याPatternक्लास का उपयोग करना होगा।
null पास करने पर व्यवहार
contains() में null पास करने से NullPointerException उत्पन्न होता है।
उदाहरण के लिए, निम्न कोड एक एक्सेप्शन फेंकेगा:
String text = null;
System.out.println(text.contains("test")); // Exception occurs
इसी प्रकार, यदि लक्ष्य स्ट्रिंग स्वयं null है, तो वही एक्सेप्शन फेंका जाएगा।
इसलिए, contains() को कॉल करने से पहले null जाँच करना अत्यधिक अनुशंसित है।
3. व्यावहारिक उपयोग उदाहरण और महत्वपूर्ण विचार
जावा का contains() मेथड बहुत सहज और सुविधाजनक है, लेकिन गलत उपयोग से अप्रत्याशित बग या अक्षम कोड उत्पन्न हो सकता है।
यह अनुभाग contains() के बुनियादी उपयोग को समझाता है और उन प्रमुख बिंदुओं को उजागर करता है जिनका आपको ध्यान रखना चाहिए।
3-1. बुनियादी उपयोग उदाहरण
निम्न कोड एक सरल उदाहरण दर्शाता है जिसमें लक्ष्य स्ट्रिंग में किसी विशिष्ट कीवर्ड की उपस्थिति की जाँच की जाती है:
String sentence = "今日はJavaの勉強をしています。";
if (sentence.contains("Java")) {
System.out.println("Javaが含まれています。");
} else {
System.out.println("Javaは含まれていません。");
}
जैसा कि दिखाया गया है, contains() अक्सर if स्टेटमेंट के साथ मिलकर शर्तीय शाखा बनाने के लिए उपयोग किया जाता है।
3-2. केस सेंसिटिविटी
contains() मेथड केस-सेंसिटिव है।
उदाहरण के लिए, निम्न कोड false लौटाता है:
String text = "Welcome to Java";
System.out.println(text.contains("java")); // false
ऐसे मामलों में, तुलना से पहले स्ट्रिंग्स को लोअरकेस (या अपरकेस) में बदलना सामान्य है:
String text = "Welcome to Java";
System.out.println(text.toLowerCase().contains("java")); // true
यह तरीका इनपुट केस में अंतर को समाप्त करने में मदद करता है (उदाहरण के लिए, उपयोगकर्ता इनपुट)।
3-3. null और खाली स्ट्रिंग्स का संभालना
contains() का उपयोग करते समय सबसे महत्वपूर्ण विचारों में से एक null का संभालना है। यदि लक्ष्य स्ट्रिंग या तर्क में से कोई भी null है, तो NullPointerException उत्पन्न होगा।
String text = null;
System.out.println(text.contains("test")); // Runtime error
इस समस्या से बचने के लिए, हमेशा null जाँच जोड़ें:
if (text != null && text.contains("test")) {
// Safe to process
}
ध्यान दें: खाली स्ट्रिंग ("") पास करने पर हमेशा true लौटता है।
String sample = "test";
System.out.println(sample.contains("")); // true
हालाँकि, यह व्यवहार व्यावहारिक रूप से बहुत कम उपयोगी होता है और यदि अनजाने में खाली स्ट्रिंग्स पास की जाती हैं तो यह अनजाने में बग्स का कारण बन सकता है।
3-4. कई कीवर्ड खोजों का समर्थन नहीं करता
contains() एक समय में केवल एक कीवर्ड की जाँच कर सकता है। कई कीवर्ड की जाँच करने के लिए, आपको या तो contains() को कई बार कॉल करना होगा या Stream API का उपयोग करना होगा।
String target = "エラーコード123:アクセス拒否";
if (target.contains("エラー") || target.contains("拒否")) {
System.out.println("問題のあるメッセージです。");
}
या, गतिशील कीवर्ड सेट के लिए:
List<String> keywords = Arrays.asList("エラー", "障害", "失敗");
boolean found = keywords.stream().anyMatch(target::contains);
4. contains() के साथ अक्सर तुलना किए जाने वाले मेथड्स
जावा कई मेथड्स प्रदान करता है जो स्ट्रिंग्स की तुलना करने या यह जांचने के लिए कि कोई विशिष्ट सबस्ट्रिंग मौजूद है या नहीं। इनमे से, contains() “आंशिक मिलान” के लिए उपयोग किया जाता है, लेकिन अन्य मेथड्स भी समान उद्देश्यों की पूर्ति करते हैं। यह अनुभाग उन मेथड्स की विशेषताओं और अंतर को समझाता है ताकि आप उन्हें उचित रूप से उपयोग कर सकें।
4-1. equals() से अंतर: सटीक मिलान बनाम आंशिक मिलान
equals() यह निर्धारित करता है कि दो स्ट्रिंग्स बिल्कुल समान हैं या नहीं। इसके विपरीत, contains() आंशिक मिलानों की जाँच करता है।
String a = "Java";
String b = "Java";
System.out.println(a.equals(b)); // true: Exact match
System.out.println(a.contains("av")); // true: Partial match
मुख्य अंतर:
| Comparison | equals() | contains() |
|---|---|---|
| Match Type | Exact match | Partial match |
| Case Sensitivity | Sensitive | Sensitive |
| Argument Type | Object | CharSequence |
उपयोग दिशानिर्देश:
जब मानों को बिल्कुल मिलना आवश्यक हो (जैसे, आईडी सत्यापन) तो equals() का उपयोग करें।
जब आंशिक मिलान स्वीकार्य हो (जैसे, कीवर्ड खोज) तो contains() का उपयोग करें।
4-2. indexOf() से अंतर: क्या आपको स्थिति चाहिए
indexOf() मेथड का उपयोग भी यह जांचने के लिए किया जा सकता है कि कोई सबस्ट्रिंग स्ट्रिंग में मौजूद है या नहीं। अंतर यह है कि यदि सबस्ट्रिंग मिलती है तो indexOf() सबस्ट्रिंग का प्रारंभिक इंडेक्स लौटाता है। यदि सबस्ट्रिंग नहीं मिलती, तो यह -1 लौटाता है।
String text = "Hello, Java World!";
System.out.println(text.indexOf("Java")); // 7
System.out.println(text.indexOf("Python")); // -1
आप indexOf() का उपयोग करके contains() के व्यवहार को दोहरा भी सकते हैं:
if (text.indexOf("Java") >= 0) {
System.out.println("It is contained.");
}
उपयोग दिशानिर्देश:
यदि आपको इंडेक्स की आवश्यकता नहीं है, तो contains() अधिक पठनीय और पसंदीदा है।
4-3. matches() से अंतर: नियमित अभिव्यक्तियों (रेग्युलर एक्सप्रेशन) का समर्थन
matches() मेथड यह जांचता है कि कोई स्ट्रिंग पूरी तरह से दिए गए रेग्युलर एक्सप्रेशन से मेल खाती है या नहीं। इसके विपरीत, contains() केवल शाब्दिक सबस्ट्रिंग मिलान की जाँच करता है और रेग्युलर एक्सप्रेशन का समर्थन नहीं करता।
String text = "abc123";
System.out.println(text.matches(".*123")); // true
System.out.println(text.contains(".*123")); // false (not regex)
यदि आप रेग्युलर एक्सप्रेशन आधारित आंशिक मिलान चाहते हैं, तो Pattern क्लास का उपयोग करें:
4-4. फीचर तुलना का सारांश
| Method | Purpose | Return Type | Regex Support | Use Case |
|---|---|---|---|---|
contains() | Partial match | boolean | No | Keyword search |
equals() | Exact match | boolean | No | ID/password checks |
indexOf() | Get match position | int | No | Index-based processing |
matches() | Regex match | boolean | Yes | Find pattern-based strings |
5. सामान्य उपयोग केस और नमूना कोड
Java का contains() मेथड सरल है फिर भी वास्तविक विकास परिदृश्यों में व्यापक रूप से उपयोग किया जाता है।
आम उपयोग मामलों में उपयोगकर्ता इनपुट वैधता, लॉग विश्लेषण, और फ़िल्टरिंग ऑपरेशन शामिल हैं।
यह अनुभाग व्यावहारिक उदाहरणों को संबंधित कोड के साथ कवर करता है।
5-1. उपयोगकर्ता इनपुट वैधता (निषिद्ध शब्दों का पता लगाना)
फ़ॉर्म या चैट एप्लिकेशन में, आपको यह पता लगाना पड़ सकता है कि क्या कुछ निषिद्ध शब्द शामिल हैं।
String input = "このアプリは最悪だ";
String banned = "最悪";
if (input.contains(banned)) {
System.out.println("不適切な言葉が含まれています。");
}
कई NG शब्दों को संभालना:
List<String> bannedWords = Arrays.asList("最悪", "バカ", "死ね");
for (String word : bannedWords) {
if (input.contains(word)) {
System.out.println("不適切な言葉が含まれています: " + word);
break;
}
}
5-2. लॉग फ़ाइल विश्लेषण (विशिष्ट संदेशों का पता लगाना)
सिस्टम या एप्लिकेशन लॉग का विश्लेषण करते समय, आप केवल उन पंक्तियों को निकालना चाह सकते हैं जिनमें ERROR या WARN जैसे विशिष्ट कीवर्ड शामिल हों।
List<String> logs = Arrays.asList(
"[INFO] サーバーが起動しました",
"[ERROR] データベース接続失敗",
"[WARN] メモリ使用率が高い"
);
for (String log : logs) {
if (log.contains("ERROR")) {
System.out.println("エラー発生ログ: " + log);
}
}

5-3. सूची में स्ट्रिंग्स को फ़िल्टर करना (Stream API का उपयोग करके)
बड़े डेटा सेट को संभालते समय, विशिष्ट सबस्ट्रिंग वाले केवल तत्वों को निकालने के लिए Stream API का उपयोग करें:
List<String> users = Arrays.asList("tanaka@example.com", "sato@gmail.com", "yamada@yahoo.co.jp");
List<String> gmailUsers = users.stream()
.filter(email -> email.contains("@gmail.com"))
.collect(Collectors.toList());
System.out.println(gmailUsers); // [sato@gmail.com]
5-4. HTTP अनुरोध हेडर या URL का पार्सिंग
वेब विकास में, रूटिंग या डिवाइस-विशिष्ट हैंडलिंग के लिए User-Agent या URL में सबस्ट्रिंग की जाँच आवश्यक हो सकती है।
String userAgent = "Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X)";
if (userAgent.contains("iPhone")) {
System.out.println("スマートフォンからのアクセスです。");
}
5-5. फ़ाइल पाथ या एक्सटेंशन की जाँच
फ़ाइल के पाथ का उपयोग करके उसकी प्रकार निर्धारित करने के लिए:
String filePath = "/usr/local/data/sample.csv";
if (filePath.contains(".csv")) {
System.out.println("CSVファイルです。");
}
नोट:
फ़ाइल एक्सटेंशन की जाँच के लिए, endsWith(".csv") अक्सर अधिक सटीक होता है।
व्यावहारिक विचार
- सटीकता आवश्यक होने पर सामान्यीकरण लागू करें (जैसे
toLowerCase(),trim())। - बड़े पैमाने के डेटा के लिए, Stream API या regex पर विचार करें।
- ध्यान रखें कि
contains()एक आंशिक मिलान है—सुरक्षित लॉजिक के लिए इसे अन्य शर्तों के साथ मिलाएँ।
6. प्रदर्शन संबंधी विचार
जबकि contains() मेथड उत्कृष्ट पठनीयता और सरलता प्रदान करता है, बड़े डेटा सेट को संभालते समय या बार-बार ऑपरेशन्स चलाते समय आपको इसके प्रदर्शन प्रभाव पर विचार करना चाहिए।
यह अनुभाग contains() की प्रोसेसिंग लागत और बेहतर दक्षता के लिए वैकल्पिक दृष्टिकोणों को समझाता है।
6-1. contains() का आंतरिक व्यवहार और समय जटिलता
contains() मेथड लक्ष्य स्ट्रिंग को शुरुआत से क्रमिक रूप से खोजता है ताकि सबस्ट्रिंग मिल सके।
आंतरिक रूप से, यह indexOf() मेथड पर निर्भर करता है, और इसकी सबसे खराब स्थिति में समय जटिलता है:
O(n * m)
– n = लक्ष्य स्ट्रिंग की लंबाई
– m = खोज स्ट्रिंग की लंबाई
भारी प्रोसेसिंग का उदाहरण:
for (String line : hugeTextList) {
if (line.contains("error")) {
// processing
}
}
यह बड़े लूप में बार-बार उपयोग होने पर प्रदर्शन को काफी प्रभावित कर सकता है।
6-2. बार-बार खोजों के दौरान प्रदर्शन सुधारने की तकनीकें
बड़े डेटा सेट में contains() को बार-बार उपयोग करते समय, निम्नलिखित तकनीकें प्रोसेसिंग गति को सुधार सकती हैं:
• सभी स्ट्रिंग्स को पहले से लोअरकेस में बदलें
प्रत्येक तुलना के दौरान toLowerCase() कॉल करने के बजाय, स्ट्रिंग्स को पहले से सामान्यीकृत करें:
List<String> normalizedList = originalList.stream()
.map(String::toLowerCase)
.collect(Collectors.toList());
• समानांतर प्रोसेसिंग के लिए parallel() के साथ Stream API का उपयोग करें
CPU कोर का उपयोग करके खोज को तेज़ करें:
List<String> result = hugeTextList.parallelStream()
.filter(line -> line.contains("keyword"))
.collect(Collectors.toList());
• जटिल खोज पैटर्न के लिए नियमित अभिव्यक्तियों (regex) का उपयोग करें
यदि शर्तें जटिल हैं और एक regex में व्यक्त की जा सकती हैं, तो Pattern बेहतर प्रदर्शन कर सकता है:
Pattern pattern = Pattern.compile("error|fail|fatal");
for (String log : logs) {
if (pattern.matcher(log).find()) {
// matched
}
}
6-3. मेमोरी दक्षता और पुन: उपयोग विचार
वे ऑपरेशन जो अक्सर स्ट्रिंग को बदलते हैं—जैसे toLowerCase() या substring()—बहुत सारे अनावश्यक स्ट्रिंग ऑब्जेक्ट बना सकते हैं, जिससे मेमोरी उपयोग पर असर पड़ता है। यह विशेष रूप से लंबी अवधि चलने वाले एप्लिकेशन या सर्वर‑साइड प्रोसेसिंग के लिए महत्वपूर्ण है।
मुख्य बिंदु:
- अनावश्यक स्ट्रिंग इंस्टेंस बनाने से बचें।
- बड़े डेटा सेट के लिए, बफ़रिंग या चंक प्रोसेसिंग पर विचार करें.
- बार‑बार
contains()के परिणामों को कैश करने से कुछ मामलों में प्रदर्शन में सुधार हो सकता है।
7. अन्य प्रोग्रामिंग भाषाओं के साथ तुलना
Java का contains() मेथड सरल, विश्वसनीय सबस्ट्रिंग मिलान प्रदान करता है, लेकिन अन्य भाषाएँ भी समान सुविधाएँ अपने‑अपने विशेषताओं के साथ देती हैं। यह अनुभाग Python, JavaScript, और C# में सबस्ट्रिंग जांच की तुलना करता है ताकि अंतर और समानताएँ उजागर हो सकें।
7-1. Python: in ऑपरेटर के साथ सरल आंशिक मिलान
Python में, आप in ऑपरेटर का उपयोग करके सबस्ट्रिंग की उपस्थिति जांच सकते हैं:
text = "Hello, Python!"
if "Python" in text:
print("含まれています")
यह सिंटैक्स अत्यंत पठनीय है—लगभग प्राकृतिक भाषा जैसा—और न्यूनतम सीखने की आवश्यकता होती है।
भिन्नताएँ और नोट्स:
inएक भाषा ऑपरेटर है, मेथड नहीं।- Python में स्ट्रिंग तुलना भी केस‑सेंसिटिव होती है।
Noneएक अपवाद उत्पन्न करता है; null जांच आवश्यक है।
7-2. JavaScript: includes() के साथ आंशिक मिलान
JavaScript (ES6+) में, आप includes() मेथड का उपयोग कर सकते हैं:
const text = "JavaScript is fun";
console.log(text.includes("fun")); // true
यह मेथड Java के contains() के बहुत समान है और मानसिक रूप से माइग्रेट करना आसान है।
भिन्नताएँ और नोट्स:
undefinedपास करने पर अपवाद नहीं फेंका जाता; यह केवलfalseलौटाता है।includes()एरेज़ पर भी काम करता है, जिससे इसकी बहुमुखी प्रतिभा बढ़ती है।
7-3. C#: Contains() Java के समान
C# भी Contains() मेथड प्रदान करता है जिसका व्यवहार Java के समान है:
string text = "Welcome to C#";
bool result = text.Contains("C#");
भिन्नताएँ और नोट्स:
- C# का
Contains()डिफ़ॉल्ट रूप से केस‑सेंसिटिव है, लेकिन आपStringComparison.OrdinalIgnoreCaseका उपयोग करके केस को अनदेखा कर सकते हैं। - null पास करने पर
ArgumentNullExceptionउत्पन्न होता है।
7-4. विभिन्न भाषाओं के बीच तुलना तालिका
| Language | Example Syntax | Case Sensitivity | Notes |
|---|---|---|---|
| Java | "abc".contains("a") | Sensitive | Throws exception on null |
| Python | "a" in "abc" | Sensitive | Most intuitive syntax |
| JavaScript | "abc".includes("a") | Sensitive | Also works for arrays |
| C# | "abc".Contains("a") | Sensitive (configurable) | Comparison mode can be chosen |
सारांश: अपने उपयोग केस के लिए सही सिंटैक्स चुनें
हालांकि सबस्ट्रिंग जांच विभिन्न भाषाओं में एक सामान्य आवश्यकता है, प्रत्येक भाषा अपना स्वयं का मेथड या सिंटैक्स प्रदान करती है। Java का contains() स्थिरता और स्पष्टता प्रदान करता है, जिससे यह एंटरप्राइज़ सिस्टम और रखरखाव योग्य एप्लिकेशन के लिए उपयुक्त बनता है। Python और JavaScript जैसी भाषाएँ सरल और संक्षिप्त सिंटैक्स प्रदान करती हैं, जो हल्के स्क्रिप्ट या तेज़ प्रोटोटाइपिंग के लिए आदर्श हो सकती हैं।
सामान्य अवधारणाओं और प्रत्येक भाषा की विशिष्ट विशेषताओं को समझकर, आप विभिन्न भाषाओं में अधिक सुरक्षित और अधिक कुशल कोड लिख सकेंगे।
8. अक्सर पूछे जाने वाले प्रश्न (FAQ)
नीचे Java के contains() मेथड से संबंधित अक्सर पूछे जाने वाले प्रश्न दिए गए हैं—जो आपको जटिल बिंदुओं को समझने और सामान्य गलतियों से बचने में मदद करेंगे।
प्रश्न 1. क्या contains() केस‑सेंसिटिव है?
हाँ, यह केस‑सेंसिटिव है। उदाहरण के लिए, "Java".contains("java") false लौटाता है।
समाधान:
String input = "Welcome to Java";
boolean result = input.toLowerCase().contains("java");
प्रश्न 2. नियमित अभिव्यक्तियों (regex) का उपयोग करके आंशिक मिलान कैसे जांचें?
contains() रेगुलर एक्सप्रेशन का समर्थन नहीं करता।
matches() या Pattern क्लास का उपयोग करें।
उदाहरण (संख्यात्मक पैटर्न की जाँच):
import java.util.regex.Pattern;
import java.util.regex.Matcher;
String text = "注文番号: A123456";
Pattern pattern = Pattern.compile("A\\d+");
Matcher matcher = pattern.matcher(text);
if (matcher.find()) {
System.out.println("パターンに一致しました。");
}
Q3. यदि मैं contains() को null पर कॉल करता हूँ तो क्या होता है?
एक NullPointerException फेंका जाएगा।
String target = null;
System.out.println(target.contains("test")); // Error
समाधान:
if (target != null && target.contains("test")) {
System.out.println("含まれています。");
}
Q4. यदि मैं contains() को एक खाली स्ट्रिंग (“”) पास करता हूँ तो क्या होता है?
यह हमेशा true लौटाता है।
String text = "Java";
System.out.println(text.contains("")); // true
हालांकि यह आधिकारिक विनिर्देशन का हिस्सा है, यह व्यवहार बहुत कम उपयोगी होता है और यदि खाली स्ट्रिंग्स का इरादा नहीं है तो अप्रत्याशित बग्स का कारण बन सकता है।
Q5. क्या contains() एक साथ कई कीवर्ड खोज सकता है?
नहीं। प्रत्येक कॉल केवल एक कीवर्ड की जाँच करता है।
String text = "本日はシステムエラーが発生しました";
if (text.contains("エラー") || text.contains("障害") || text.contains("失敗")) {
System.out.println("問題が検出されました。");
}
डायनामिक दृष्टिकोण:
List<String> keywords = Arrays.asList("エラー", "障害", "失敗");
boolean found = keywords.stream().anyMatch(text::contains);
Q6. कब contains() बनाम indexOf() का उपयोग करना चाहिए?
contains() एक बूलियन लौटाता है, जबकि indexOf() एक संख्यात्मक इंडेक्स लौटाता है।
- जब आप केवल यह जानना चाहते हैं कि उपस्ट्रिंग मौजूद है या नहीं, तब
contains()का उपयोग करें। - जब आपको स्थिति (पोजीशन) भी चाहिए, तब
indexOf()का उपयोग करें।String text = "Error: Disk full"; if (text.contains("Error")) { int pos = text.indexOf("Error"); System.out.println("Position: " + pos); }
9. निष्कर्ष
Java का contains() मेथड एक शक्तिशाली और सुविधाजनक टूल है यह निर्धारित करने के लिए कि कोई विशिष्ट उपस्ट्रिंग स्ट्रिंग के भीतर मौजूद है या नहीं।
यह उपयोगकर्ता इनपुट वैलिडेशन, लॉग विश्लेषण, और डेटा फ़िल्टरिंग जैसे विभिन्न परिदृश्यों में व्यापक रूप से उपयोग किया जाता है।
इस लेख में, हमने कवर किया:
- बेसिक सिंटैक्स और रिटर्न वैल्यूज़
- केस सेंसिटिविटी और इसे कैसे संभालें
- null और खाली स्ट्रिंग्स को संभालना
- अन्य स्ट्रिंग तुलना विधियों से अंतर
- व्यावहारिक उपयोग केस: वैलिडेशन, लॉग सर्च, स्ट्रीम प्रोसेसिंग
- परफॉर्मेंस विचार और ऑप्टिमाइज़ेशन तकनीकें
- Python, JavaScript, और C# के साथ तुलना
- अक्सर पूछे जाने वाले प्रश्न और ट्रबलशूटिंग टिप्स
हालांकि contains() सहज और बहुमुखी है, इसका उपयोग बड़े डेटासेट, बार-बार कॉल, या जटिल खोज शर्तों वाले मामलों में सावधानीपूर्वक मूल्यांकन किया जाना चाहिए।
नॉर्मलाइज़ेशन, पैरलल प्रोसेसिंग, रेगेक्स, और कैशिंग रणनीतियों को मिलाकर, आप परफॉर्मेंस और पठनीयता दोनों को बनाए रख सकते हैं।
चूंकि contains() जावा में स्ट्रिंग्स के साथ काम करने का मूलभूत हिस्सा है, हम आशा करते हैं कि यह लेख आपको इसे अपने विकास प्रोजेक्ट्स में अधिक सुरक्षित और प्रभावी ढंग से उपयोग करने में मदद करेगा।

