我有以下文本文件,我通常使用位置和长度来获取给定字符串的子字符串值。
ID A B Element Name Element C Length Position Key2
01 PN PNFN USER MID NAM USR 1 1 2 A
....about 60 rows
这是我如何读取文本文件并应用文本文件的位置和长度值到字符串输入。
字符串输入 = "AAAAABABBBCCCCDDDDGGGG..."
**EDIT**
var values = File.ReadLines("file")
.SkipWhile(string.IsNullOrWhiteSpace).Skip(1)
.Select(l => l.Split(new[] {' ', 't'}, StringSplitOptions.RemoveEmptyEntries));
var array1 = offsets.Select(split => new
{
Element = split[5],
Length = int.Parse(split[7]),
Position = int.Parse(split[8])
});
foreach (var info in array1)
{
string substring = input.Substring(info.Position, info.Length);
Console.WriteLine("Element: '{0}' Value: '{1}'", info.Element, substring);
}
这将只读取 14 行,并打破循环。我做错了什么吗?谢谢
我使用子字符串而不是空格来查找确切的位置:
foreach (var hashtable in from item in offsets
let element = item.Substring(4,2)
let length = Convert.ToInt32(item.Substring(6, 6))
let position = item.Substring(7, 4)
select new Hashtable
{
{"Element", element},
{"Length", length},
{"Position", position}
})