.开发者_开发百科NET 2
string[] myStrings = GetMyStrings();
string test = "testValue";
How can I verify if myStrings
contains test
?
In .NET 2.0, you could do the following if you want the index:
int index = Array.FindIndex(
myStrings,
delegate(string s) { return s.Equals(test); }
);
index
will be -1
if myStrings
does not contain test
.
If you merely want to check for existence:
bool exists = Array.Exists(
myStrings,
delegate(string s) { return s.Equals(test); }
);
I have found an elegant answer at the page here http://www.dotnettoad.com/index.php?/archives/10-Array.Contains.html. What you have to do in .NET 2.0 is to cast to IList and call Contains method.
(IList<string> mystrings).Contains(test);
Here's a .NET 2.0 compliant approach. Using Array.Find
will return null if the value isn't found.
C# Approach
string[] myStrings = { "A", "B", "testValue" };
string test = "testValue";
string result = Array.Find(myStrings, delegate(string s) { return s == test; });
Console.WriteLine("Result: " + result);
If you need a case insensitive match use s.Equals(test, StringComparison.InvariantCultureIgnoreCase)
.
EDIT: with VB.NET 2.0 more effort is required since it doesn't support anonymous delegates. Instead you would need to add a Function
and use AddressOf
to point to it. You would need to set the testValue
as a member or property since it will not be passed in to the predicate method. In the following example I use Array.Exists
.
VB.NET Approach
' 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
Instead of using a static array, you could use a List:
List<string> myStrings = new List<string>(GetMyStrings());
if(myStrings.Contains("testValue"))
{
// Do Work
}
Thought I would add another to the mix, first available in .NET 3.5, I believe:
Enumerable.Contains(myStrings.ToArray(), 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;
}
And this will have the best performance ever. :P
Here is almost the exact same question on msdn. Find String in String Array As others have said you really have two options: 1) Use a list for easier checking 2) Loop through your array to find the string
you can use Array.BinarySearch as described below.
string[] strArray = GetStringArray();
string strToSearch ="test";
Array.BinarySearch(strArray, strToSearch);
How about this:
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
This should work for .Net 2.0 and VB.Net.
I assume you want to check if any elements in your array contains a certain value (test). If so you want to construct a simple loop. In fact I think you should click here.
精彩评论