Text in Textdatei nach Teilstring sortieren

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Text in Textdatei nach Teilstring sortieren

    Hallo,

    ich hab hier eine Texdatei mit Einträgen die eine Uhrzeit beinhalten.

    Jetzt sollte ich die Zeilen in der Datei so sortieren daß der Inhalt nach dem zweiten Block (im Beispiel ist es eine Uhrzeit z.B: 13:40) sortiert

    zurückgeschrieben wird.

    Beispiel:

    Textdatei vor der Sortierung:

    C213 13:40 Afjghfdkjghdsfkjgh
    C213 20:00 Testtermin 2
    C213 15:00 Testtermin

    Textdatei nach der Sortierung:

    C213 13:40 Afjghfdkjghdsfkjgh
    C213 15:00 Testtermin
    C213 20:00 Testtermin 2

    hat jemand eine Idee?

    Vielen Dank vorab

    swirfel
    @swirfel Willkommen im Forum. :thumbup:
    Wenn das Format genau wie angegeben ist, ist die chronologische Reihenfolge identisch mit der alphabetischen.
    Pack die Zeilen in eine List(Of String) und sortiere diese:

    VB.NET-Quellcode

    1. Dim lines() = IO.File.ReadAllLines("c:\temp\vorSort.txt")
    2. Dim ll = New List(Of String)(lines)
    3. ll.Sort()
    4. IO.File.WriteAllLines("c:\temp\sort.txt", ll.ToArray)
    ============================
    Kann es sein, dass der Präfix ("C213") variiert?
    Wenn ja, musst Du Dir einen eigenen Sorter schreiben und die Liste mit diesem sortieren:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim lines() = IO.File.ReadAllLines("c:\temp\vorSort.txt")
    3. Dim ll = New List(Of String)(lines)
    4. ll.Sort(New SortDate) ' dies hier
    5. IO.File.WriteAllLines("c:\temp\sort.txt", ll.ToArray)
    6. End Sub
    7. ' und diese Klasse hier
    8. Private Class SortDate
    9. Implements IComparer(Of String)
    10. Public Function Compare(x As String, y As String) As Integer Implements IComparer(Of String).Compare
    11. ' sortieren nach dem reinen Zeitstempel
    12. Return String.Compare(x.Substring(5, 5), y.Substring(5, 5))
    13. End Function
    14. End Class

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!