string array.Contains?

时间:2010-10-12 17:59:06

标签: c# .net arrays .net-2.0

.NET 2

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

如何验证myStrings是否包含test

10 个答案:

答案 0 :(得分:18)

在.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); }
);

答案 1 :(得分:11)

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

(IList<string> mystrings).Contains(test);

答案 2 :(得分:10)

这是一种符合.NET 2.0标准的方法。如果找不到值,则使用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

答案 3 :(得分:9)

您可以使用List:

,而不是使用静态数组
List<string> myStrings = new List<string>(GetMyStrings());
if(myStrings.Contains("testValue"))
{
    // Do Work
}

答案 4 :(得分:7)

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

Enumerable.Contains(myStrings.ToArray(), test)

答案 5 :(得分:2)

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

答案 6 :(得分:1)

这几乎是msdn上完全相同的问题。 Find String in String Array 正如其他人所说,你真的有两种选择: 1)使用列表更容易检查 2)遍历你的数组以找到字符串

答案 7 :(得分:1)

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

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

答案 8 :(得分:0)

这个怎么样:

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。

答案 9 :(得分:-2)

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