问题在wpf中使用contains()方法

时间:2012-07-08 09:45:34

标签: c# wpf

我试图检查特定字段中是否包含给定值。这里是我写的代码

bool _Contains = LabelDetails.Name.Contains("1");

现在想要检查cantains方法中的多个值。我尝试了如下但显示异常(“方法'包含'没有重载'需要3个参数”);

bool _Contains = LabelDetails.Name.Contains("1","2","3");

4 个答案:

答案 0 :(得分:5)

这是因为Contains只是检查给定字符串中是否存在子字符串。怎么知道.Contains("foo", "bar")你的意思?包含两个中的一个?包含两者?一个接一个地包含它们但不是相反的方式?

您可以使用正则表达式来检查给定字符串列表之一是否存在:

Regex.IsMatch("foo|bar|baz", LabelDetails.Name)

或创建一些扩展方法:

public static bool ContainsAll(this string s, params string[] args) {
    foreach (string x in args) {
        if (!s.Contains(x)) return false;
    }
    return true;
}

public static bool ContainsAny(this string s, params string[] args) {
    foreach (string x in args) {
        if (s.Contains(x)) return true;
    }
    return false;
}

答案 1 :(得分:2)

我假设你有一个带有文本值的文本框。然后你想检查一下你的文本框中是否包含一些列表值,并将结果输入bool(true或false)。 True表示你想做某事。错误意味着你想做某事

List<string> Items = new List<string>() { "1", "2", "3" };
foreach (string item in Items)
{
    bool _Contains = TextBox.Text.Contains(item);
     if (_Contains == true)
        {
           //do something
        }
    else
       {
          //do something
       }
 }

答案 2 :(得分:0)

如果您希望将此名称作为字符串类的扩展方法,则可以通过在自定义方法中传递名称来实现此目的

public bool Contains(string name, params string[] pStrings )
{
    return pStrings.Any(pString => name.Contains(pString));
}

答案 3 :(得分:0)

您可以参考In Extension方法

https://stackoverflow.com/a/833477/649524

public static bool In<T>(this T source, params T[] list)
{
  if(null==source) throw new ArgumentNullException("source");
  return list.Contains(source);
}