vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Text in Textdatei nach Teilstring sortieren 
Autor: swirfel
Datum: 24.11.17 13:00

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Text in Textdatei nach Teilstring sortieren 
Autor: Manfred X
Datum: 24.11.17 14:44

Vielleicht durch ein SortedDictionary ??
  Private Sub timeaftertime()
 
        Dim lines As New _
        System.Collections.Generic.SortedDictionary(Of Date, String)
 
        Using sr As New IO.StreamReader("C:\Daten\Times.txt")
            Dim line$, parts$()
            While Not sr.EndOfStream
                line = sr.ReadLine
                parts = line.Split(" "c)
                If parts.Length > 1 Then
                    'Alternative (result: Date) - aber nicht zur Geisterstunde!
                    'If Date.TryParse(parts(1), result) Then
                    '    lines.Add(result, line)
                    'End If
 
                    parts = parts(1).Split(":"c)
                    If parts.Length > 1 Then
                        lines.Add _
                        (New Date(1, 1, 1, CInt(parts(0)), CInt(parts(1)), 0), _
                        line)
                    End If
                End If
            End While
        End Using
 
        Using sw As New IO.StreamWriter("C:\Daten\times_sort.txt")
            For Each line As KeyValuePair(Of Date, String) In lines
                sw.WriteLine(line.Value)
            Next
        End Using
    End Sub


Beitrag wurde zuletzt am 24.11.17 um 14:56:12 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

SubstringComparer 
Autor: Manfred X
Datum: 25.11.17 07:21

 Private Class SubstringComparer
        Implements System.Collections.Generic.IComparer(Of String)
 
        Dim _splitchar As Char
        Dim _blockindex As Integer
 
        Public Sub New(SplitChar As Char, Blockindex As Integer)
            _splitchar = SplitChar
            _blockindex = Blockindex
        End Sub
 
        Public Function Compare(x As String, y As String) As Integer _
            Implements System.Collections.Generic.IComparer(Of String).Compare
 
            Dim x1 As String = x.Split(_splitchar)(_blockindex)
            Dim y1 As String = y.Split(_splitchar)(_blockindex)
 
            Return x1.CompareTo(y1)
        End Function
    End Class
Anwendung
  Dim lines() As String = IO.File.ReadAllLines("C:\daten\times.txt")
 
  Array.Sort(lines, New SubstringComparer(" "c, 1))
 
  IO.File.WriteAllLines("C:\daten\times_sort.txt", lines)
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel