我有这段代码:
description="EUR CMS Swap";
description_token=description.Split(" ".ToCharArray());
bool check;
if(description_token.Contains("EUR CMS"))
check=true;
但check
总是假的,即使
description_token[0]="EUR"
description_token[1]="CMS"
我做错了什么?有替代方法吗?
答案 0 :(得分:5)
您拥有的源值会按空格分割到数组中,因此您的数组中应该有three
个对象
(EUR,CMS和Swap)
所以你应该把支票重写为
if(description_token.Contains("EUR") || description_token.Contains("CMS"))
(如果只有其中一个值在该数组内就足够了)
或
if(description_token.Contains("EUR") && description_token.Contains("CMS"))
(如果两个值都必须在该数组内)
答案 1 :(得分:3)
您要么必须查找子字符串,要么必须比较所有项目:
子:
bool check = description.Contains("EUR CMS");
LINQ Enumerable.All
:
string[] tokens = "EUR CMS".Split();
bool check = tokens.All(t => description_token.Contains(t));
LINQ与Enumerable.Any
(至少一场比赛)
bool check = tokens.Any(t => description_token.Contains(t));
第一种方法检查给定字符串是否是较大的子字符串,第二种方法检查所有标记是否包含在较大的集合中。
答案 2 :(得分:2)
您不能以这种方式使用Contains
。拆分后,没有任何单个元素包含“EUR CMS”。您可以在拆分字符串之前执行检查(使用description.Contains("EUR CMS"
),也可以在拆分后通过单独检查EUR和CMS来执行检查。
答案 3 :(得分:1)
if(description_token.Contains("EUR") && description_token.Contains("CMS"))
check=true;