Hallo zusammen,
vorab: Ich bin noch neu in der VB.NET Programmierung und bitte den ein
oder anderen Fehler und eventuell gewöhnungsbedürftigen Programmierstil
zu entschuldigen.
Es geht um folgendes:
Ich habe eine "List of String()" und möchte diese sortieren.
In der erste "Spalte" stehen Bezeichnungen wie zum Beispiel abc_1 bis
abc_107 ("abc" ist dabei konstant) und in der zweiten Spalte die
dazugehörigen Werte. Das Ganze wird aus einer .txt Datei heraus geladen
und die Bezeichnung und der Wert werden mit einem ";" voneinander
getrennt.
Problem dabei ist, dass bei der Ausgabe die Reihenfolge genauso wie in
der .txt Datei nicht numerisch sortiert ist, d.h.
abc_1
abc_10
abc_100
usw.
Dass macht zwar Sinn, ist aber für meine Zwecke ungeeignet.
Ich bräuchte es nämlich so:
abc_1
abc_2
abc_3
...
abc_107
Wichtig ist auch, dass die dazugehörigen Werte aus der zweiten Spalte
mit sortiert werden, damit die Zuordnung nachdem sortieren noch gegeben
ist. Es sollten also nur die Zeilen sortiert werden.
Ich freue mich über jeden Lösungsansatz, weil ich irgendwie gerade
ziemlich auf der Leitung stehe.
Code:
1 | Private Sub cmdStart_Click(sender As Object, e As EventArgs) Handles cmdStart.Click
|
2 | Dim datei As FileStream
|
3 | Dim lesen As StreamReader
|
4 | Dim zeile As String
|
5 | Dim spalte As String()
|
6 | Dim temp As New List(Of String())
|
7 |
|
8 |
|
9 | 'Überprüfe, ob die Datei existiert
|
10 | If Not File.Exists("H:\Test.TXT") Then
|
11 | MessageBox.Show("Fehler: " & vbCrLf & "Datei nicht vorhanden!")
|
12 | Exit Sub
|
13 | End If
|
14 |
|
15 | datei = New FileStream("H:\Test.TXT", FileMode.Open)
|
16 | lesen = New StreamReader(datei)
|
17 |
|
18 |
|
19 |
|
20 | Do Until lesen.Peek() = -1
|
21 |
|
22 | zeile = lesen.ReadLine()
|
23 |
|
24 | If zeile.StartsWith("abc_") Then
|
25 | spalte = zeile.Split(";")
|
26 | Else
|
27 | Continue Do
|
28 | End If
|
29 |
|
30 | temp.Add(spalte)
|
31 |
|
32 | Loop
|
33 |
|
34 | 'Ausgabe
|
35 | For i As Integer = 0 To temp.Count - 1
|
36 | For j As Integer = 0 To 1
|
37 | TextBox1.Text &= temp(i)(j) & vbCrLf
|
38 | Next
|
39 | TextBox1.Text &= vbCrLf
|
40 | Next
|
41 | lesen.Close()
|
42 |
|
43 | End Sub
|
Danke schon mal.
Grüße