C#String Array包含

时间:2017-07-05 04:20:09

标签: c# arrays contains

有人可以向我解释为什么代码的顶部有效,但当测试是一个数组时,它不会

        string test = "Customer - ";
        if (test.Contains("Customer"))
        {
            test = "a";
        }

以下代码无效

        string[]test = { "Customer - " };
        if (test.Contains("Customer"))
        {
            test[0]= "a";
        }

4 个答案:

答案 0 :(得分:8)

在第一种情况下,您调用String.Contains来检查字符串是否包含子字符串 因此,此条件返回true

在第二种情况下,您在string[]上调用Enumerable.Contains,它会检查字符串数组是否包含特定值。
由于您的集合中没有"Customer"字符串,因此会返回false

这两个类似的被称为但实际上是不同类型的不同方法。

如果要检查集合中的任何字符串是否包含" Customer"作为子字符串,您可以使用LINQ .Any()

if (test.Any(s => s.Contains("Customer"))
{
    test[1] = "a";
}

答案 1 :(得分:2)

第一个代码段在另一个字符串Customer内搜索字符串Customer -,该字符串在第二个代码段字符串Customer中有效但在其中一个字符串Customer -内搜索。因此第二个返回false。

从声明测试

的方式可以看出这一点
string test = "Customer - ";

OR

string[] test = { "Customer - " };

注意大括号。这就是你如何定义一个集合(这里是数组)

要制作第二段代码,您应该

string[] test = { "Customer - " };
if (test.Any(x => x.Contains("Customer")))
{
    test[1] = "a";
}

答案 2 :(得分:1)

因为在第二种情况下,当您在字符串数组中搜索第一个字符串时,if条件为false。您可以使用任何关键字搜索与客户匹配的数组中的任何字符串,或者您可以搜索test [0]以搜索数组中的第一个字符串(如果它与客户匹配):

if (test[0].Contains("Customer"))
    {
        //your rest of the code here
    }


 if (test.Any(x => x.Contains("Customer")))
    {
        //your rest of the code here
    }

答案 3 :(得分:1)

string test = "Customer - ";
if (test.Contains("Customer"))
{
  test = "a";
}

在此Contains中是一个String类方法,它是IEnumerable检查的基础

“客户 - ”有客户

但是

string[]test = { "Customer - " };
if (test.Contains("Customer"))
{
   test[1]= "a";
 }

在这个Place Contains是一个IEnumerable方法,它是IEnumerable checks的基础。所以,它不起作用你改变代码

string[] test = { "Customer - " };
if (test.Any(x => x.Contains("Customer")))
{

}

test [1] =“a”抛出异常,因为,数组位置从0开始而不是1