2010-07-23 19 views
5

है कि कैसे एक स्ट्रिंग सरणी स्ट्रिंग का कुछ हिस्सा है या नहीं? मैं इससी # ऐरे में आंशिक

String[] stringArray = new [] { "[email protected]", "[email protected]", "@gmail.com" }; 
string str = "[email protected]" 

if (stringArray.Any(x => x.Contains(str))) 
{ 
    //this if condition is never true 
} 

जैसी सरणी मैं इस करता है, तो ब्लॉक चलाना चाहते हैं जब str एक स्ट्रिंग thats पूरी तरह से या सरणी के मद में से किसी का हिस्सा शामिल है।

उत्तर

15

मान लिया जाये कि आप LINQ उपलब्ध मिल गया है:

bool partialMatch = stringArray.Any(x => str.Contains(x)); 

यहां तक ​​कि LINQ के बिना यह आसान है:

bool partialMatch = Array.Exists(stringArray, x => str.Contains(x)); 

या सी # 2 का उपयोग:

bool partialMatch = Array.Exists(stringArray, 
     delegate(string x) { return str.Contains(x)); }); 

आप सी # उपयोग कर रहे हैं 1 तो आपको शायद इसे कठिन तरीके से करना होगा :)

+0

अपने स्निपेट का उपयोग कर अपना अपडेट कोड देखें, लेकिन यह काम नहीं कर रहा है। – coure2011

+0

जॉन का कोड यहां ठीक काम करता है। आप अपने उदाहरण से कुछ खो रहे हैं। –

+0

कृपया मेरे अपडेट किए गए कोड को चेकआउट करें। – coure2011

0

यदि आप देख रहे हैं कि आपके सरणी में किसी विशेष स्ट्रिंग में "[email protected]" के बजाय "@ gmail.com" है, तो आपके पास कुछ विकल्प हैं।

इनपुट पक्ष पर, SO पर यहां कई प्रकार के प्रश्न हैं जो आपको उस दिशा में इंगित करेंगे जो आपको सत्यापित करने के लिए आवश्यक है कि आपका इनपुट एक वैध ईमेल पता है।

आप केवल वापस अंत पर जांच कर सकते हैं, मैं की तरह कुछ करना चाहते हैं:

emailStr = "@gmail.com"; 
if(str.Contains(emailStr) && str.length == emailStr.length) 
{ 
    //your processing here 
} 

तुम भी रेगुलर एक्सप्रेशन मिलान का उपयोग कर सकते हैं, लेकिन मैं उस के साथ काफी करीब परिचित नहीं कर रहा हूँ आपको बताने के लिए क्या पैटर्न आपको चाहिए

यदि आप "@ gmail.com" वाले किसी भी चीज़ की तलाश में हैं, तो जॉन का जवाब आपका सबसे अच्छा दांव है।

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