ich eine Reihe von Zahlen wie diese haben:vb.net die * Werte erhalten * der ersten und letzten Zeilen eines Arrays
{10 20 30 40 50 60 70 80 90}
Die Start- und End-Zahlen wird die gleiche nicht immer (in der Tat keiner von ihnen wird).
Ich möchte den Wert (nicht den Index) der ersten und letzten Einträge erhalten.
Also im obigen Beispiel interessiert mich nur die Werte "10" und "90".
Dieses Array von einer Komma getrennte Textdatei aufgebaut wird, die wie folgt aussieht:
mein Code Dies ist10,3.456
20,3.588
30,3.640
40,3.790
50,3.850
60,3.680
70,3.480
80,3.280
90,3.765
:
zweiDim arrName, arrValue As New List(Of String)()
Dim sdata() As String
Dim column1, column2 As Decimal
For Each line As String In IO.File.ReadAllLines("c:\file.txt")
If line <> "" And Not line.StartsWith("#") Then
sdata = line.Split(","c)
arrName.Add(sdata(0).Trim())
arrValue.Add(sdata(1).Trim())
' get data from array
column1 = sdata(0)
column2 = sdata(1)
End If
Next
Also, was ich will, ist in der Lage zu schaffen, Variablen wo:
column1Lowest=<the lowest value> (in this case 10)
column1Highest=<the highest value> (in this case 90)
Ich habe mehrere Methoden ausprobiert, aber alles, was ich zurück zu bekommen scheint, ist das ent Ire Array jedes Mal, oder "-1" (keine Übereinstimmung gefunden in Array ich weiß).
Dinge, die ich versucht habe: IndexOf(), FirstIndexOf(), LastIndexOf()
Ich bin nur daran interessiert, den niedrigsten eines höchsten Wert in column1 (aber ich habe noch den Rest an anderer Stelle verwenden).
Ich bin jetzt aus Ideen.
Bitte helfen - mit Antworten in der Form, die ein Neuling verstehen kann.
Danke.
EDIT:
unten an Steves Antwort hinzuzufügen, habe ich versucht, die enumerable Option Strings aber ich glaube, ich war in Probleme mit meinem Dateiformat laufen - einige Dateien waren in Ordnung - einige waren nicht (in der Regel eine Linie Dateien ohne Feed nach der letzten Zeile der Daten!).
Dies ist mein Code:
Dim Lines As Collections.Generic.IEnumerable(Of String) = File.ReadLines("c:\file.txt").Where(Function(q) q.StartsWith("#") = False)
Line0 = Lines.FirstOrDefault
LineN = Lines.LastOrDefault
lowestNum = Line0.Split(New Char() {","c})
highestNum = LineN.Split(New Char() {","c})
lowNum = lowestNum(0)
highNum = highestNum(0)
etc ..
Also, wenn ich dieses Stück Code auf meiner bereits analysierten Datei verwenden wollte - wie würde ich das bestehende Array mit ihm verwenden?
Ich habe gerade versucht:
Dim Lines As Collections.Generic.IEnumerable(Of String) = {column1}
FirstValue = Lines.FirstOrDefault
LastValue = Lines.LastOrDefault
Aber diese druckt noch das gesamte Array?
der Ausgabe angezeigt Ich verwende:
ListBox2.Items.Add(FirstValue)
ListBox1.Items.Add(LastValue)
ich den listbox Einfügen von Code sowohl in als auch außerhalb der „For Each“ Schleife versucht haben. Wenn ich sie nach draußen bringe, ergeben sich verschiedene Probleme - daher habe ich versucht, die Variablen außerhalb der Schleife ohne Erfolg zu deklarieren.
Ich habe gesagt, ich war ein Neuling!
Ich habe dies bereits verwendet, aber ich stieß auf Probleme beim Lesen von Dateien. Also habe ich versucht, es ohne Erfolg in meine Schleife oben zu integrieren. Ich habe meine ursprüngliche Frage bearbeiten, um dies zu veranschaulichen. – Tony
Steve, das ist perfekt, danke. Ich musste Werte <> Namen wechseln und einen Tippfehler korrigieren! Aber ich glaube, Sie haben mich gerade getestet :-) – Tony
Fühlen Sie sich frei, die Antwort zu bearbeiten, um die Tippfehler zu beheben – Steve