【问题标题】:C# if string contains more than 1 valueC# 如果字符串包含超过 1 个值
【发布时间】:2012-11-08 07:15:40
【问题描述】:

早安,

if 语句中,如果我们想检查一个字符串是否包含一个值,我们有:

if (string.Contains("Value1"))    
{    
}    

我们如何在不写整个语句的情况下让字符串与 if 语句中的更多值进行比较?例如避免下面的语句

if ((string.Contains("Value1") && (string.Contains("Value2")) && (string.Contains("Value3")))    
{    
}

谢谢

【问题讨论】:

    标签: c# string if-statement comparison


    【解决方案1】:

    所以,基本上,您想检查 all 的值是否包含在 string 中。幸运的是(在 LINQ 的帮助下),这几乎可以直接翻译成 C#:

    var values = new String[] {"Value1", "Value2", "Value3"};
    
    if (values.All(v => myString.Contains(v))) {
        ...
    }
    

    同样,如果您想检查字符串中是否包含 any 值,您可以将 All 替换为 Any

    【讨论】:

    • 非常感谢。正是我想要的
    【解决方案2】:

    嗯,你可以使用 LINQ:

    string[] requiredContents = { "Foo", "Bar", "Baz" };
    
    if (requiredContents.All(x => text.Contains(x))
    {
        ...
    }
    

    请注意,就像短路 && 运算符一样,All 将在找到 满足条件的值时立即停止。 (如果您想在其他地方以类似的方式使用Any,则一旦找到确实满足条件的值,它将立即停止。)

    不过,我不会为一个相当小的数字而烦恼。没有多余的括号,它真的没那么糟糕:

    if (text.Contains("foo") && text.Contains("bar") && text.Contains("Baz"))
    {
    }
    

    如果或者确实有相当多的值(我可能会在大约 5 处画线)或者,我只会开始使用更一般的形式一组值作为参数传入,或以其他方式改变。

    【讨论】:

      【解决方案3】:

      因为您需要“您的”字符串来包含所有值:

      var values = new String[] {"Value1", "Value2", "Value3"};
      var s = yourString;
      
      if (values.Count(v => s.Contains(v)) == values.Length) {
          ...
      }
      

      【讨论】:

      • 你为什么要继续寻找你已经找到的不匹配的?
      【解决方案4】:

      这是最好的解决方案吗?可能不是。它是否可读和可扩展?是的。

      var matches = {"string1", "string2", "string3","string-n"};
      var i = 0;
      foreach(string s in matches)
      {
          if(mystring.Contains(s))
          {
              i++;
          }
      }
      if(i == matches.Length)
      {
          //string contains all matches.
      }
      

      【讨论】:

        【解决方案5】:
        if(stringArray.Any(s => stringToCheck.Contains(s)))
        

        如果要确保它包含所有子字符串,请将@​​987654322@ 更改为All

        if(stringArray.All(s => stringToCheck.Contains(s)))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-09-01
          • 2021-04-11
          • 2011-12-24
          • 2017-06-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多