我需要阅读像这样的文本文件
MyItemName = Description @ MoreInfo
现在我需要将这3个字段转换为表格。使用'='和'@'作为模式。
答案 0 :(得分:5)
只需拆分=
和@
- 这会返回一个匿名类的IEnumerable
以及您感兴趣的属性:
var items = File.ReadAllLines(fileName)
.Skip(1) //Skip header
.Where( line => !string.IsNullOrWhiteSpace(line))
.Select(line =>
{
var columns = line.Split('=', '@');
return new
{
ItemName = columns[0].Trim(),
Description = columns[1].Trim(),
MoreInfo = columns[2].Trim()
};
});
这种方法需要将分隔符标记用作独占的分隔符 - 如果它们确实出现在任何字段中,这将使所有内容陷入混乱并使此方法无效。
答案 1 :(得分:1)
如果你真的想使用linq ... 它看起来不是很好,它不会创建一个表,但你明白了这一点:
from line in File.ReadAllLines(filename)
let eqPos = line.IndexOf('=')
let atPos = line.IndexOf('@')
select new {
Name = line.Substring(0, eqPos).Trim(),
Desc = line.Substring(eqPos + 1, atPos - (eqPos + 1)).Trim(),
Info = line.Substring(atPos + 1).Trim()
}