我一定做错了......但我无法理解!
我有一个包含字符串的数组。如果数组包含一些像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"
?
答案 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”)
像这样,它检查数组中的值而不是数组本身