我试图检查特定字段中是否包含给定值。这里是我写的代码
bool _Contains = LabelDetails.Name.Contains("1");
现在想要检查cantains方法中的多个值。我尝试了如下但显示异常(“方法'包含'没有重载'需要3个参数”);
bool _Contains = LabelDetails.Name.Contains("1","2","3");
答案 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);
}