我试图从一个文件中读取,程序遍历文本文件的每一行,比较每行的前8个字符,并将这些行连接成一个其中的8个字符是similar.See代码:
while ((line1 = fileread1.ReadLine()) != null)
{
line2 = fileread2.ReadLine();
while (line2 != null)
{
if (line1.Length >= 8 && line2.Length >= 8 &&
line1.Substring(0, 8) == line2.Substring(0, 8))
{
//line2 = line2.Remove(0, 60);
line1 = line1 +" "+ line2;
}
line2 = fileread3.ReadLine();
counter2++;
}
filewrite.WriteLine(line1);
counter1++;
}问题1:
如何获取fileread2的计数并将其赋值给fileread3,因为每次执行内部循环时,我都需要将fileread3的计数重置为与fileread2相同。
问题2:
如何将组合后的行写成前8个字符匹配的单行?
发布于 2014-05-14 18:05:45
如果您希望根据前8个字符对数据进行分组,则只需:
var groups = File.ReadLines(your_file_name).GroupBy(line => line.Substring(0, 8));对组中的元素调用Count()的元素进行计数
groups.First().Count()(您也可以通过foreach (var group in groups)通过groups枚举。)
分组结果将包含文件中的完整行。如果您不想在结果中包含"key“(即前8个字符),则可以使用GroupBy的重载
var groups = File.ReadLines(your_file_name).GroupBy(line => line.Substring(0, 8), line => line.Substring(8));为了获得包含"key“和连接的行的新输出,您可以使用如下代码:
var groups = File.ReadLines(input_file).GroupBy(line => line.Substring(0, 8), line => line.Substring(8));
File.WriteAllLines(output_file, groups.Select(group => string.Format("{0}{1}", group.Key, string.Join(string.Empty, group))));https://stackoverflow.com/questions/23647133
复制相似问题