【问题标题】:C# Split String and Use in If StatementC# 拆分字符串并在 If 语句中使用
【发布时间】:2011-03-03 18:26:48
【问题描述】:

有没有更优雅的方法来完成这个。

我有一个字符串,我想在 if 语句中单独使用它。例如:

string people = "John;Joe;Jane;Mike";
string[] names = people.Split(';');

if(person == "John" || person == "Joe" || person == "Jane" || person == "Mike")
{
    ....
}
else
{
    ....
}

我猜有更好的方法。

谢谢。

【问题讨论】:

标签: c# string if-statement


【解决方案1】:
if(names.Contains(person)) { ... }

【讨论】:

    【解决方案2】:
    string people = "John;Joe;Jane;Mike";
    string[] names = people.Split(';');
    
    if(names.Contains(person))
    {
        ....
    }
    else
    {
        ....
    }
    

    Contains<T>IEnumerable<T> 的扩展方法(并且数组是IEnumerable<T>),因此您可以在Split 的结果上使用它来检查它是否包含您要查找的字符串。

    【讨论】:

      【解决方案3】:
      string people = "John;Joe;Jane;Mike";
      List<string> names = new List<string>(people.Split(';'));
      
      if(names.Contains(person))
      {
          ....
      }
      else
      {
          ....
      }
      

      收藏是你的朋友:)

      【讨论】:

      • 使用字符串数组,它是一个集合对我来说似乎足够高效。
      • @contactmatt:数组实际上并不是集合,它们只是碰巧定义了一组扩展方法,让您可以像对待它们一样对待它们(当其他人发布他们的答案时,我了解到这一点;)。在这种情况下,坚持使用数组可能就足够了,但在许多实际情况下,您需要动态扩展的 List
      【解决方案4】:

      这样就可以了:

      if(names.Contains(person))
      

      【讨论】:

        【解决方案5】:

        这样做:

        string people = ";John;Joe;Jane;Mike;"; 
        string findPerson = "Joe";
        
        if (people.contains(String.Format(";{0};", findPerson)) {
          ... it's found...
        } else {
          ... it's not found ....
        }
        

        请注意,我在原始字符串的开头和结尾添加了分隔符。此外,我们将分隔符附加到 findPerson 变量的开头和结尾。这确保我们不会遇到部分匹配。例如在“christoph”中查找“chris”

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-10-20
          • 2014-06-18
          • 1970-01-01
          • 2014-06-13
          • 1970-01-01
          • 2013-12-13
          • 1970-01-01
          • 2014-03-02
          相关资源
          最近更新 更多