string[] myStrings = GetMyStrings();
string test = "testValue";
कैसे इस बात की पुष्टि कर सकते हैं अगर myStrings
test
शामिल?
string[] myStrings = GetMyStrings();
string test = "testValue";
कैसे इस बात की पुष्टि कर सकते हैं अगर myStrings
test
शामिल?
bool ContainsString(string[] arr, string testval)
{
if (arr == null)
return false;
for (int i = arr.Length-1; i >= 0; i--)
if (arr[i] == testval)
return true;
return false;
}
और यह अब तक का सबसे अच्छा प्रदर्शन होगा। :
List<string> myStrings = new List<string>(GetMyStrings());
if(myStrings.Contains("testValue"))
{
// Do Work
}
ध्यान से पढ़ें;) – serhio
@ सेरहियो। मैंने किया। तीन बार। आप यह निर्धारित करने के लिए कहते हैं कि स्ट्रिंग सरणी में कोई विशेष स्ट्रिंग निहित है या नहीं। इसे आपको इसी तरह करना होगा। यदि यह आवश्यक नहीं है, तो कृपया अपने प्रश्न को ठीक करें। –
बस सरणी से myStrings में सरणी बदलें और यह उत्तर काम करेगा। यह आपके लिए कैसे काम नहीं करता है? –
इसके बजाय एक स्थिर सरणी का उपयोग कर के, आप एक सूची इस्तेमाल कर सकते हैं। यदि ऐसा है तो आप एक साधारण पाश बनाना चाहते हैं। वास्तव में मुझे लगता है कि आपको click here होना चाहिए।
मैं 'स्ट्रिंग [] अक्षरों = "ए, बी, सी, डी" का उपयोग करता हूं। .Split(); '। क्या ऐरे से सूची में रूपांतरणों का उपयोग करने के लिए इस तरह के एक प्राथमिक कार्य के लिए इष्टतम है? – serhio
@ सेरहियो - कोड पहले, यदि आवश्यक हो तो बाद में अनुकूलित करें। जब तक आप इन सूचियों को बड़े पैमाने पर नहीं बना रहे हैं, तब तक वास्तव में कोई समस्या नहीं होनी चाहिए। –
मुझे लगता है आप अगर अपने सरणी में किसी भी तत्व को एक निश्चित मूल्य (परीक्षण) शामिल हैं जाँच करना चाहते हैं: पी
यहां एक .NET 2.0 अनुपालन दृष्टिकोण है। यदि मूल्य नहीं मिला है तो Array.Find
का उपयोग शून्य से वापस आ जाएगा।
सी # दृष्टिकोण
string[] myStrings = { "A", "B", "testValue" };
string test = "testValue";
string result = Array.Find(myStrings, delegate(string s) { return s == test; });
Console.WriteLine("Result: " + result);
आप एक केस संवेदी मैच उपयोग s.Equals(test, StringComparison.InvariantCultureIgnoreCase)
की जरूरत है।
संपादित करें: वीबी.नेट 2.0 के साथ अधिक प्रयास की आवश्यकता है क्योंकि यह अज्ञात प्रतिनिधियों का समर्थन नहीं करता है। इसके बजाय आपको Function
जोड़ने और इसे इंगित करने के लिए AddressOf
का उपयोग करना होगा। आपको सदस्य या संपत्ति के रूप में testValue
सेट करने की आवश्यकता होगी क्योंकि यह भविष्यवाणी विधि में पारित नहीं किया जाएगा। निम्नलिखित उदाहरण में मैं Array.Exists
का उपयोग करता हूं।
VB.NET दृष्टिकोण
' field or property '
Dim test As String = "testValue"
Sub Main
Dim myStrings As String() = { "A", "B", "testValue" }
Dim result As Boolean = Array.Exists(myStrings, AddressOf ContainsValue)
Console.WriteLine(result)
End Sub
' Predicate method '
Private Function ContainsValue(s As String) As Boolean
Return s = test
End Function
वीबी समाधान के लिए धन्यवाद, भले ही मुझे सी # एक की आवश्यकता हो, शायद वीबी लोगों के लिए उपयोगी हो जाएगा ... – serhio
मुझे 2.0 और वीबी आवश्यकता याद आई। यह निश्चित रूप से काम करेगा, लेकिन Array.IndexOf के लिए एक कॉल आसान हो सकता है। –
@ क्रिस सहमत हुए। यह 'कंटेनर' प्रकार के चेक के करीब है लेकिन 'इंडेक्सऑफ' से अधिक प्रयास की आवश्यकता है। –
.NET 2.0 में, आप अगर आप सूचकांक चाहते निम्न कर सकता है:
int index = Array.FindIndex(
myStrings,
delegate(string s) { return s.Equals(test); }
);
index
हो जाएगा -1
अगर myStrings
test
शामिल नहीं है ।
आप केवल होने की जाँच करना चाहते हैं:
bool exists = Array.Exists(
myStrings,
delegate(string s) { return s.Equals(test); }
);
यहाँ MSDN पर लगभग ठीक उसी सवाल है। Find String in String Array के रूप में अन्य लोगों ने कहा क्या तुम सच में दो विकल्प हैं: स्ट्रिंग
खोजने के लिए अपने सरणी के माध्यम से 1) आसान 2 की जाँच के लिए एक सूची का उपयोग करें) लूप कैसे इस बारे में:
Sub Main
Dim myStrings(4) As String
myStrings(0) = "String 1"
myStrings(1) = "String 2"
myStrings(2) = "testValue"
myStrings(3) = "String 3"
myStrings(4) = "String 4"
Dim test As String = "testValue"
Dim isFound As Boolean = Array.IndexOf(myStrings, test) >= 0
If isFound Then
Console.WriteLine("Found it!")
End If
End Sub
यह चाहिए .NET 2.0 और VB.Net के लिए काम करें।
ओपी का मुद्दा यह है कि यह लैम्बडास के साथ संगत .NET 2.0 नहीं है। –
यदि ओपी वीएस -2008 का उपयोग कर रहा है तो वे .NET 2.0 को लक्षित करते समय लैम्बडा का उपयोग कर सकते हैं। – onedaywhen
मुझे यहां पृष्ठ पर एक सुंदर उत्तर मिला है http://www.dotnettoad.com/index.php?/archives/10-Array.Contains.html। आपको .NET 2 में क्या करना है।0 को IList पर डालना है और कॉल विधि शामिल है।
(IList<string> mystrings).Contains(test);
सोचा मैं पहले उपलब्ध .NET 3.5 में मिश्रण करने के लिए एक और जोड़ना होगा, मेरा मानना है कि:
Enumerable.Contains(myStrings.ToArray(), test)
सॉर्ट किया गया है इसका अर्थ यह है कि 'System.Linq' का उपयोग करके, आप' myStrings.Contains (test) 'लिख सकते हैं, क्योंकि' एन्यूमेरेबल। कॉन्टेन्स 'एक एक्सटेंशन विधि है। (बीटीडब्ल्यू, .NET संस्करण 3.5 समान सीएलआर का उपयोग .NET संस्करण 2.0 के रूप में करता है, इसलिए यह आमतौर पर ".NET 2.0" में काम करता है।) –
vb.net और सी # एक ही भाषा ... –
@Chris थॉम्पसन नहीं हैं: यह eddy556 है .... – serhio
आईक्यू परीक्षण? ~ 4 के लड़के से ऐसा सवाल? (.NET 2.0 का उपयोग करना स्पष्ट नहीं है) – Xaqron