C# में, String.Contains() एक स्ट्रिंग मेथड है। यह मेथड जांचने के लिए उपयोग किया जाता है कि क्या सबस्ट्रिंग दिए गए स्ट्रिंग के भीतर होती है या नहीं।
यह बूलियन मान लौटाता है। यदि सबस्ट्रिंग स्ट्रिंग में मौजूद है या मान खाली स्ट्रिंग ("") है, तो यह True लौटाता है, अन्यथा False लौटाता है।
एक्सेप्शन - यह मेथड ArgumentNullException दे सकता है यदि str नल है।
यह मेथड केस-सेंसिटिव जांच करता है। खोज हमेशा स्ट्रिंग के पहले कैरेक्टर पोजीशन से शुरू होती है और अंतिम कैरेक्टर पोजीशन तक जारी रहती है।
उदाहरण 1: केस-सेंसिटिव जांच
static void Main(string[] args)
{
string[] strs = { "Sachin", "India", "Bangalore", "Karnataka", "Delhi" };
if (strs.Contains("sachin")) // लोअरकेस - नहीं मिलेगा
{
Console.WriteLine("String Present");
}
else
{
Console.WriteLine("String Not Present");
}
Console.ReadLine();
}
आउटपुट
String Not Present
उदाहरण 2: सही केस के साथ
static void Main(string[] args)
{
string[] strs = { "Sachin", "India", "Bangalore", "Karnataka", "Delhi" };
if (strs.Contains("Sachin")) // सही केस
{
Console.WriteLine("String Present");
}
else
{
Console.WriteLine("String Not Present");
}
Console.ReadLine();
}
आउटपुट
String Present
उदाहरण 3: LINQ का उपयोग करके (केस-इनसेंसिटिव)
static void Main(string[] args)
{
string[] strs = { "Sachin", "India", "Bangalore", "Karnataka", "Delhi" };
// केस-इनसेंसिटिव खोज
var res = strs.FirstOrDefault(x => x.Equals("sachin", StringComparison.OrdinalIgnoreCase));
Console.WriteLine(res ?? "Not found"); // आउटपुट: Sachin
Console.ReadLine();
}
उदाहरण 4: फोरच लूप के साथ
static void Main(string[] args)
{
string[] strs = { "Sachin", "India", "Bangalore", "Karnataka", "Delhi" };
foreach (var item in strs)
{
if (item == "Sachin") // या item.Equals("Sachin")
{
Console.WriteLine("String is present");
break; // मिलने पर जल्दी बाहर निकलें
}
}
Console.ReadLine();
}
आउटपुट
String is present
तुलना: सरणी में खोज के तरीके
| विधि | केस-सेंसिटिव | रिटर्न | प्रदर्शन |
|---|---|---|---|
array.Contains(value) | हाँ | bool | O(n) |
Array.IndexOf(array, value) | हाँ | int (इंडेक्स या -1) | O(n) |
array.Any(x => x == value) | हाँ | bool | O(n) |
Array.BinarySearch | हाँ | int | O(log n) *सॉर्टेड सरणी आवश्यक* |
array.FirstOrDefault(x => x.Equals(v, IgnoreCase)) | नहीं | T या null | O(n) |
HashSet<T>.Contains | हाँ | bool | O(1) औसत |
सर्वोत्तम अभ्यास
- बार-बार खोज के लिए:
HashSet<string>में बदलें O(1) लुकअप के लिए - केस-इनसेंसिटिव:
StringComparison.OrdinalIgnoreCaseके साथEqualsका उपयोग करें - पैटर्न मिलान:
Where(x => x.Contains(...))या रेजेक्स का उपयोग करें - पहला मैच:
FirstOrDefaultपूरे एन्यूमरेशन से बचने के लिए - बूलियन जांच:
AnyCount > 0से तेज़ (शॉर्ट-सर्किट)
केस-इनसेंसिटिव Contains एक्सटेंशन
public static class ArrayExtensions
{
public static bool ContainsIgnoreCase(this string[] array, string value)
{
if (array == null || value == null) return false;
return array.Any(s => s.Equals(value, StringComparison.OrdinalIgnoreCase));
}
}
// उपयोग
string[] cities = { "Delhi", "Mumbai", "Bangalore" };
bool found = cities.ContainsIgnoreCase("delhi"); // true