代码之家  ›  专栏  ›  技术社区  ›  Aamir

如何使用LINQ拆分字符串并获取指定的令牌

  •  3
  • Aamir  · 技术社区  · 14 年前

    我有一个制表符分隔的字符串,格式如下:

    string line = "D\t892270\t88418\t6\t2452927\t-99999\t-99999\t12";
    

    我想要的是通过 indexToGet

    我已经写了以下的LINQ查询来完成这项工作,我相信可以改进很多,但目前我无法做到这一点。有人能帮我改进这个LINQ查询吗?

    int indexToGet = 7;
    var val =
        (from str in line.Split('\t')
        select str).ToArray().GetValue(indexToGet).ToString();
    
    2 回复  |  直到 14 年前
        1
  •  6
  •   Peter Lillevold Rene    14 年前

    为什么需要使用LINQ?下面的代码在没有LINQ开销的情况下解决了这个问题:

    var val = line.Split('\t')[indexToGet];
    

    澄清: ElementAt 扩展方法。所以你可以替换 .ToArray().GetValue(indexToGet).ToString(); 得到这个:

    var val =
        (from str in line.Split('\t')
        select str).ElementAt(indexToGet);
    

    var val = line.Split('\t').ElementAt(indexToGet);
    

    接下来,因为 元素

    var val=line.Split('\t')[indexToGet];
    
        2
  •  2
  •   Cheng Chen    14 年前

    不要强迫自己使用LINQ。你为什么用

    (from str in line.Split('\t') select str).ToArray()
    

    line.Split('\t')
    

    另一个需要改进的地方是在没有检查的情况下不要直接使用索引访问元素。您最好先检查,以免出现超出范围的异常。

    最后,你得到的是一个字符串,不需要调用 .ToString()