string array.Contains?

.NET 2

string[] myStrings = GetMyStrings(); string test = "testValue"; 

如何validationmyStrings是否包含test

在.NET 2.0中,如果需要索引,可以执行以下操作:

 int index = Array.FindIndex( myStrings, delegate(string s) { return s.Equals(test); } ); 

如果myStrings不包含testindex将为-1

如果您只想检查是否存在:

 bool exists = Array.Exists( myStrings, delegate(string s) { return s.Equals(test); } ); 

我在页面http://www.dotnettoad.com/index.php?/archives/10-Array.Contains.html找到了一个优雅的答案。 你在.NET 2.0中要做的就是转换为IList并调用Contains方法。

 (IList mystrings).Contains(test); 

这是一个符合.NET 2.0的方法。 如果Array.Find值,则使用Array.Find将返回null。

C#方法

 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)

编辑:使用VB.NET 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 

您可以使用List来代替使用静态数组:

 List myStrings = new List(GetMyStrings()); if(myStrings.Contains("testValue")) { // Do Work } 

以为我会添加另一个,首先在.NET 3.5中提供,我相信:

 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; } 

这将是有史以来最好的表现。 :P

这几乎是msdn上完全相同的问题。 在字符串数组中查找字符串正如其他人所说,您确实有两个选项:1)使用列表更容易检查2)循环遍历数组以查找字符串

您可以使用Array.BinarySearch,如下所述。

  string[] strArray = GetStringArray(); string strToSearch ="test"; Array.BinarySearch(strArray, strToSearch); 

这个怎么样:

 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。

我假设您要检查数组中的任何元素是否包含特定值(测试)。 如果是这样,你想构建一个简单的循环。 事实上,我认为你应该点击这里 。