我有一个文本文件如下:
1 ... 3 4 2
2 ... 3 21 4
3 ... 6 4 21 15
4 ... 14 21 12
我想编辑这些字符串,以便将虚线部分之后的数字拆分为对应于每个字符串的第一个数字。例如,
1
2 1
3 1 2
4 1 2 3
...
21 3 4
我该怎么做?
注意:我从文本文件中获取第一个数字组,并逐字符串地编辑它。之后,我将已编辑的字符串写入文本文件。鉴于此,我获取第一个数字组的代码的一部分样本如下:
for (var i = 0; i < existingLines.Length; i++)
{
var split = existingLines[i].Split('\t');
var act = i - 1;
var sc1 = int.Parse(split[6]);
var sc2 = int.Parse(split[7]);
appendedLines.Add(string.Format("{0} {1} {2}", act, sc1, sc2));
}
答案 0 :(得分:2)
此LINQ代码应该可以帮助您入门
string path = "c:\\temp\\test.txt";
using (var sr = new StreamReader(path))
{
var lines = new List<IEnumerable<int>>();
while (!sr.EndOfStream)
{
lines.Add(sr.ReadLine().Split(new[] { '.', ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(x => int.Parse(x)));
}
foreach (var node in lines.SelectMany(x => x).Distinct().OrderBy(x => x))
{
var predecessors = lines.Where(x => x.Skip(1).Contains(node))
.Select(x => x.First())
.OrderBy(x => x);
Console.WriteLine(node + " " + string.Join(" ", predecessors));
}
}
输出
2 1
3 1 2
4 1 2 3
6 3
12 4
14 4
15 3
21 2 3 4