String.Contains():多个字符 - C#

时间:2014-03-10 14:31:46

标签: c# string

我有这段代码:

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"

我做错了什么?有替代方法吗?

4 个答案:

答案 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)

您要么必须查找子字符串,要么必须比较所有项目:

  1. 子:

    bool check = description.Contains("EUR CMS");
    
  2. LINQ Enumerable.All

    string[] tokens = "EUR CMS".Split();
    bool check = tokens.All(t => description_token.Contains(t));
    
  3. LINQ与Enumerable.Any(至少一场比赛)

    bool check = tokens.Any(t => description_token.Contains(t));
    
  4. 第一种方法检查给定字符串是否是较大的子字符串,第二种方法检查所有标记是否包含在较大的集合中。

答案 2 :(得分:2)

您不能以这种方式使用Contains。拆分后,没有任何单个元素包含“EUR CMS”。您可以在拆分字符串之前执行检查(使用description.Contains("EUR CMS"),也可以在拆分后通过单独检查EUR和CMS来执行检查。

答案 3 :(得分:1)

if(description_token.Contains("EUR") && description_token.Contains("CMS"))
 check=true;