如何知道拆分字符串的索引是不是存在 C# .NET

Posted

技术标签:

【中文标题】如何知道拆分字符串的索引是不是存在 C# .NET【英文标题】: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个值不存在呢? 【参考方案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] 获得任何元素

【讨论】:

以上是关于如何知道拆分字符串的索引是不是存在 C# .NET的主要内容,如果未能解决你的问题,请参考以下文章

如何识别文件夹中是不是存在 Lucene.Net 索引?

C#:如何查找两个字符串数组是不是包含相同的值

如何在循环中拆分和验证字符串是不是存在

C# Regex.Split,如何将字符串拆分为用括号括起来而不是用括号括起来?

拆分 URI 并在 C# PokeApi Blazor WASM.net 5 中获取数字

通过 C# 确定字符串是不是是有效的文件路径