C# 如何从txt文件中查找子字符串的位置和长度

C# 如何从txt文件中查找子字符串的位置和长度,c#,.net,text,substring,C#,.net,Text,Substring,我有一个文本文件,其中包含我可以用来获取的信息 字符串。子字符串(位置、长度) .txt文件,其中包含位置和长度 Element Length Position Name 30 1 Age 2 31 ID 1 33 DOB 2 34 我想做的是循环遍历文本文件中的规则并获得 字符串数据。使用File.ReadLines和string.S

我有一个文本文件,其中包含我可以用来获取的信息 字符串。子字符串(位置、长度)

.txt文件,其中包含位置和长度

    Element   Length    Position
    Name       30       1
    Age         2       31
    ID          1       33
    DOB         2       34
我想做的是循环遍历文本文件中的规则并获得
字符串数据。

使用
File.ReadLines
string.Split
,下面是一些LINQ魔术:

String Data = "NAMENAMENAMENAMENAMENAMENAMEAGE119861126";
var substringInfos = File.ReadLines("Path")
    .SkipWhile(l => string.IsNullOrWhiteSpace(l)).Skip(1) // skip empty lines and the header
    .Select(l => l.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries))
    .Where(split => split.Length == 3)
    .Select(split => new
    {
        Element = split[0],
        Length = int.Parse(split[1]),
        Position = int.Parse(split[2])
    });

foreach (var info in substringInfos)
{
    string substring = Data.Substring(info.Position, info.Length);
    Console.WriteLine("Element: '{0}' Value: '{1}'", info.Element, substring);
}
结果:

Element: 'Name' Value: 'AMENAMENAMENAMENAMENAMENAMEAGE'
Element: 'Age'  Value: '11'
Element: 'ID'   Value: '9'
Element: 'DOB'  Value: '86'

你将长度和位置值保存在一个随机txt文件中?这更像是一个“这是我的作业,你能帮我做吗”问题。你能给我解释一下substringInfo变量吗?你如何知道在哪里拆分或跳过?@HXD:你不明白LINQ查询的哪一部分?第一行跳过所有空行,第一行不为空,即标题。然后它按空格或制表符拆分每一行,因为您的示例数据似乎按制表符拆分,但我不确定这是否正确。然后我检查字符串[]是否包含三个元素,否则这一行将被忽略。这三个标记用于初始化匿名类型。在
foreach
中执行LINQ查询,并将结果写入控制台。
Element: 'Name' Value: 'AMENAMENAMENAMENAMENAMENAMEAGE'
Element: 'Age'  Value: '11'
Element: 'ID'   Value: '9'
Element: 'DOB'  Value: '86'