【问题标题】:How to know if index of splitting a string exist C# .NET如何知道拆分字符串的索引是否存在 C# .NET
【发布时间】:2018-09-17 00:34:20
【问题描述】:

我正在尝试找出是否有办法检查从文件中拆分出来的字符串是否有任何值。

例如,这是我的文件及其值:

Value1 Value2 Value3
Value1 Value2
Value1 Value2 Value3 Value4
Value1 Value2 Value3 Value4 Value5

如果我得到第一行,我会得到类似的东西:

line = "Value1 Value2 Value3"

在这种情况下,可以有 5 个值,mi 行只包含 3,在我的代码中想要验证 5 是否存在。应该提到的是,我正在验证所有值 (5)。

例子:

if (line.Split(new char[0], StringSplitOptions.RemoveEmptyEntries)[0] == null)
{  
      //do something
}
else{
      //do something else
}

if (line.Split(new char[0], StringSplitOptions.RemoveEmptyEntries)[1] == null)
{  
      //do something
}
else{
      //do something else
}


if (line.Split(new char[0], StringSplitOptions.RemoveEmptyEntries)[2] == null)
{  
      //do something
}
else{
      //do something else
}

if (line.Split(new char[0], StringSplitOptions.RemoveEmptyEntries)[3] == null)
{  
      //do something
}
else{
      //do something else
}

if (line.Split(new char[0], StringSplitOptions.RemoveEmptyEntries)[4] == null)
{  
      //do something
}
else{
      //do something else
}

由于 [3] 超出了第一行的范围,我遇到了异常。

知道如何解决这个问题吗?

【问题讨论】:

  • 检查长度是否为 3,然后对索引 2 处的元素执行任何操作
  • 检查分割长度?
  • 把它分成两行并检查长度你不必全部放在一行上
  • 您正在尝试检查不存在索引处的数组值。将字符串拆分成一个数组,然后检查数组的长度,看看是否有3个项目。
  • 如果它可以有4个值,有时第3个值或第4个值不存在呢?

标签: c# .net arrays split


【解决方案1】:

您是否尝试过类似的方法:

if (line.Split(new char[0], StringSplitOptions.RemoveEmptyEntries).Length >= 3)
{
    // do something
}

这将告诉您调用 Split() 方法返回的数组中是否至少有三个元素。

【讨论】:

    【解决方案2】:

    正如其他人在 cmets 中指出的那样,您所要做的就是拆分行并计算输出数组的元素:

    foreach (String line in lines)
    {
        String[] split = line.Split(new Char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
    
        switch (split.Length)
        {
            case 1:
                // Do something...
                break;
    
            case 2:
                // Do something...
                break;
    
            case 3:
                // Do something...
                break;
    
            case 4:
                // Do something...
                break;
    
            case 5:
                // Do something...
                break;
    
            default:
                // Error?
                break;
        }
    }
    

    访问 this link 以获取工作演示。

    答案已更新

    【讨论】:

      【解决方案3】:
      line = "Value1 Value2 Value3"
      var NumberOfItems = line.Split(' ').length
      

      您将通过使用索引line.Split(' ')[0]line.Split(' ')[NumberOfItems-1] 获得任何元素

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-11
        相关资源
        最近更新 更多