这对你来说可能是一个非常简单的问题,但我很难过。我正在尝试读取具有双倍空格作为分隔符的文本文件。
"ColHdr1" "ColHdr2" "ColHdr3" "ColHdr4" "ColHDR5"
"fu" "bar" 1 2 3
"lorem" "ipsum" 5 6 7
我想将所有行放入除标题行之外的列表中。这是我到目前为止的代码:
string prnFile = @"c:\temp\test.prn";
var fileLines = new List<string>();
foreach (var line in File.ReadAllLines(prnFile, Encoding.GetEncoding(1250)).Skip(1))
{
fileLines.Add(line.Split(new[] { " " },
StringSplitOptions.RemoveEmptyEntries));
}
最后,我希望列表看起来像:
"fu" "bar" 1 2 3
"lorem" "ipsum" 5 6 7
知道我做错了吗?
答案 0 :(得分:3)
你的代码一见钟情,但我一直都在使用LINQ:
var lines = File.ReadLines(prnFile, Encoding.GetEncoding(1250))
.Skip(1)
.Select(line => line.Split(new[] { " " },
StringSplitOptions.RemoveEmptyEntries))
.ToList();
那会给你一个List<string[]>
。它似乎对我有用,但请注意它不会从字符串的开头/结尾删除双引号。
如果你真的想要一个扁平列表,这非常简单 - 只需将Select
更改为SelectMany
:
var lines = File.ReadLines(prnFile, Encoding.GetEncoding(1250))
.Skip(1)
.SelectMany(line => line.Split(new[] { " " },
StringSplitOptions.RemoveEmptyEntries))
.ToList();
这会给你:
"fu"
"bar"
1
2
3
"lorem"
"ipsum"
5
6
7