【问题标题】:How to find a substring position and length from a txt file如何从 txt 文件中查找子字符串的位置和长度
【发布时间】:2014-05-16 20:36:58
【问题描述】:

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

// this is a sample data 
String Data = "NAMENAMENAMENAMENAMENAMENAMEAGE119861126"

包含位置和长度的.txt文件

    Element   Length    Position
    Name       30       1
    Age         2       31
    ID          1       33
    DOB         2       34

我想要做的是遍历文本文件中的规则并获取一个子字符串 字符串数据。

【问题讨论】:

  • 你把长度和位置值保存在一个随机的txt文件中?
  • 这更像是一个“这是我的任务,你能帮我做”的问题

标签: c# .net text substring


【解决方案1】:

使用 File.ReadLinesString.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'

【讨论】:

  • 你能给我解释一下 substringInfo 变量你怎么知道在哪里分割或跳过?
  • @HXD:LINQ 查询的哪一部分你不明白?第一个跳过所有空行,第一行不为空,即标题。然后它按空格或制表符拆分每一行,因为您的示例数据似乎按制表符拆分,但我不确定这是否正确。然后我检查 string[] 是否包含三个元素,否则将忽略此行。这三个标记用于初始化匿名类型。在foreach 中执行LINQ 查询并将结果写入控制台。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-03
  • 1970-01-01
  • 1970-01-01
  • 2012-05-21
  • 2020-11-09
  • 1970-01-01
  • 2014-05-06
相关资源
最近更新 更多