Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.IO;
- namespace ConsoleApplication1
- {
- class Program
- {
- static void Main(string[] args)
- {
- string input = ""; //Gem indholdet her
- StreamReader reader = new StreamReader("fil.txt");
- string delimiter = ""; //Adskiller de enkelte records
- //Læs filen linje for linje og adskil records
- while (!reader.EndOfStream)
- {
- input += delimiter + reader.ReadLine();
- delimiter = "||";
- }
- string output = ""; //Gem outputtet her
- //Løb indholdet igennem
- while (input.Length > 0)
- {
- int entryStart = 0;
- int entryEnd = input.IndexOf("||", entryStart);
- if (entryEnd == -1)
- {
- entryEnd = input.Length;
- }
- //Find den næste record i indholdet
- string entry = input.Substring(entryStart, entryEnd - entryStart);
- if (output.Length == 0) //Gem den første record
- {
- output = entry;
- }
- else
- {
- int lastnameStart = entry.IndexOf(";") + 1;
- int lastnameEnd = entry.IndexOf(";", lastnameStart);
- //Find efternavnet for nuværende record
- string lastname = entry.Substring(lastnameStart, lastnameEnd - lastnameStart);
- int outputStart = 0;
- bool handled = false; //Indikerer om recorden er håndteret
- while(outputStart != -1)
- {
- bool last = false; //Indikerer om der skal foretages flere sammenligninger
- int outputEnd = output.IndexOf("||", outputStart);
- if (outputEnd == -1)
- {
- outputEnd = output.Length;
- last = true;
- }
- //Find den næste record i outputtet
- string outputEntry = output.Substring(outputStart, outputEnd - outputStart);
- int outputLastnameStart = outputEntry.IndexOf(";") + 1;
- int outputLastnameEnd = outputEntry.IndexOf(";", outputLastnameStart);
- //Find efternavnet for nuværende record i outputtet
- string outputLastname = outputEntry.Substring(outputLastnameStart, outputLastnameEnd - outputLastnameStart);
- //Check om nuværende record skal være før nuværende record i outputtet
- bool before = lastname.CompareTo(outputLastname) == -1;
- if (before)
- {
- output = output.Insert(outputStart, entry + "||");
- handled = true;
- }
- //Stop loopet, hvis sorteret eller ved sidste gennemløb
- if (handled || last)
- {
- break;
- }
- outputStart = outputEnd + 2;
- }
- //Tilføj nuværende record til sidst i outputtet, hvis ingen sortering
- if (handled == false)
- {
- output = output + "||" + entry;
- }
- }
- //Fjern nuværende record og adskiller fra inputtet
- input = input.Replace(entry, "");
- input = input.TrimStart(new char[] { '|' });
- }
- //Luk input filen
- reader.Close();
- //Tilføj records i outputtet til output fil, adskilt af linjeskift
- StreamWriter writer = new StreamWriter("outfil.txt");
- writer.Write(output.Replace("||", "\r\n"));
- //Gem og luk output filen
- writer.Close();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment