Array无法知道它是否包含字符串

时间:2014-01-23 08:26:29

标签: c# arrays

我一定做错了......但我无法理解!

我有一个包含字符串的数组。如果数组包含一些像Sales这样的单词,我正试图鳍。

drillDownUniqueNameArray[0] = "[Sales Territory].[Sales Territories].[Sales Territory Group].&[North America]";//Inside the string array there is this string in index 0

drillDownUniqueNameArray.Contains("S")//Output false!

Array.IndexOf(drillDownUniqueNameArray,"S")//Output -1!  <--Fixed My answer

drillDownUniqueNameArray.Contains("[Sales Territory].[Sales Territories].[Sales Territory Group].&[North America]") //Output true!

我thouhgt包含应该找到甚至部分字符串..

如何确定此数组是否包含"S""Sales"

6 个答案:

答案 0 :(得分:5)

您询问数组是否包含与"S"完全匹配的字符串。

你想要的是询问数组中的任何字符串是否包含字符"S",如:

drillDownUniqueNameArray.Any(v => v.Contains("S"))

答案 1 :(得分:2)

您正在检查数组是否包含 完全 "S"的元素,但我认为您尝试检查是否数组包含 包含 "S"

您可以通过以下声明来实现此目的:

drillDownUniqueNameArray.Any( str => str.Contains ("S") )

答案 2 :(得分:1)

你可以试试这个。     drillDownUniqueNameArray [0]。载( “S”);

答案 3 :(得分:0)

您可以使用LINQ:

var allWithSales = drillDownUniqueNameArray
    .Where(str => str.Contains("Sales"));

忽略此案:

var allWithSalesIgnoreCase = drillDownUniqueNameArray
     .Where(str => str.IndexOf("sales", StringComparison.OrdinalIgnoreCase) >= 0);

如果您想查找包含“Sales”(String.Split() =空格分隔符))的所有内容:

var allWordsWithSales = drillDownUniqueNameArray
    .Where(str => str.Split().Contains("Sales", StringComparer.OrdinalIgnoreCase));

现在,您可以使用foreach枚举查询,或使用ToArray()ToList创建一个集合:

foreach(string str in allWithSales)
    Console.WriteLine(str);

答案 4 :(得分:0)

您在数组中找到它,但您应该在字符串中找到该单词。

如果要查看,请使用以下内容:

drillDownUniqueNameArray.Any(x=>x.Contains("Sales"));

如果想要获取包含“Sales”的字符串

,请使用以下内容
drillDownUniqueNameArray.Where(x=>x.Contains("Sales"));

答案 5 :(得分:0)

当你这样做时:

drillDownUniqueNameArray.Contains( “S”)

它不会检查值,你必须这样做:

drillDownUniqueNameArray [0] .Contains(“S”)或drillDownUniqueNameArray.First()。包含(“S”)

像这样,它检查数组中的值而不是数组本身