Hey Leute, arbeite mich gerade in C-Sharp ein und habe jetzt mal eine Frage.
Ich erstelle eine Text Datei, in der alle relevanten Daten gespeichert werden, diese wird später hochgeladen und kann wieder runtergeladen werden. Soweit funktioniert alles.
Jetzt möchte ich aber, ein Suchfeld, wo der User ein Stichwort eingeben kann.
Dieses Stichwort soll dann gesucht werden in der Text Datei.
Auch das Funktioniert.
Kurz zum Aufbau meiner Datei:
Name,Vorname,Strasse,Hausnummer,Postleitzahl,Ort
Name,Vorname,Strasse,Hausnummer,Postleitzahl,Ort
Name,Vorname,Strasse,Hausnummer,Postleitzahl,Ort
Name,Vorname,Strasse,Hausnummer,Postleitzahl,Ort
Jetzt kann man ja nach einen Namen oder Vornamen oder was auch immer suchen.
Wie gesagt, dass funktioniert, allerdings sollen jetzt die ganzen Daten zum zugehörigen Treffer ausgegeben werden, Bsp:
Suche Meier->Treffer> Meier Walter Strasse.....
Wie bekomme ich es hin, dass die komplette Zeile ausgegeben wird.
Hallo,
du könntest Zeile für Zeile auslesen und bei einem Treffer dann die komplette Zeile ausgeben. Oder du arbeitest mit regulären Ausdrücken. Hier ist ein Tutorial dazu:
Gruß,
felix
Genau das ist der Part für den ich keine Lösung parat habe.
Zeile für Zeile auslesen mache ich schon, den Treffer finden klappt auch.
Nur wie gebe ich die Zeile, in der sich der Treffer befindet, nun komplett aus?
Naja ... wenn du jede Zeilen einzeln ausließt (und auf eine Variable speichers), dann sollte es doch kein Problem sein, diese auszugeben, oder?
Problem ist, dass die Anzahl der Zeilen stetig verändert wird, da neue Daten dazu kommen oder welche gelöscht werden.
Daher finde ich es unpraktisch jede Zeile als var zu speichern.
Gibt es da nicht eine andere Lösung? Kann man nicht auslesen in welcher Zeile der Treffer war, und dann per ReadLine(Trefferzeile) die Zeile lesen und ausgeben?
Also das ausgeben ist dann kein problem, ich weiß nur nicht wie ich die Zeilennummer des Treffers bekomme.
Aber danke trotzdem schonmal
Also ich verstehe das Problem nicht ganz. Oder du hast mich falsch verstanden.
Wenn du die Zeilen ausließt, machst du das ja sehr wahrscheinlich mit einer Schleife. Und in dieser Schleife hast du die aktuelle Zeile immer im Zugriff (also alles was du brauchst um zum Ziel zu kommen).
Wie gesagt, du kannst auch reguläre Ausdrücke dafür verwenden.
string file = System.IO.File.ReadAllText(filename);
if (file.Contains("Mustermann"))
{
lbMatch.Text = "Positiv";
}
else
{
lbMatch.Text = "Negativ";
}
Vereinfacht gesagt sieht meine Funktion im Moment so aus, und das nachdem ein Button betätigt wurde.
Also ließt du momentan nicht Zeile für Zeile ein, sondern die komplette Datei auf einmal.
Thats Right falls ich irgendwo was anderes behauptet habe sry,war spät gestern abend 😄
Den Code der dort enthalten ist muss ich ja noch in eine Schleife setzen.
for counter=0 do //müsste der anfang sein?
do endoffile oder so
Bin wirklich gerade dabei das erst zu lernen könntest du mir da nochmal helfen?
Easy:
(Geht kürzer, 1000 Wege führen nach Rom, aber darum geht es hier nicht ;-D)
string path = @"C:\datei.txt";
int filePos = 0;
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
{
using (StreamReader sr = new StreamReader(fs, Encoding.Default))
{
while (!sr.EndOfStream)
{
filePos++;
string line = sr.ReadLine();
if (string.IsNullOrEmpty(line)) continue;
//tue etwas
MessageBox.Show("Datensatz " + filePos + ": " + line);
}
}
}
Bin wirklich gerade dabei das erst zu lernen
Kein Problem. Aber mit diesem Satz wirst Du schnell auf Hinweis: Wie poste ich richtig? Punkt 1.1.1 verwiesen.
Gruß,
CoLo
Hallo Chronisch,
Name,Vorname,Strasse,Hausnummer,Postleitzahl,Ort
Ist das ne CSV-Datei? Wenn ja, dann kannst du es dir total einfach machen.
Lass die Datei von FileHelpers lesen.
Das gibt dir ne Liste aller Datensätze in der Datei wider und diese Liste musst du nur noch nach deinen Bedingungen durchsuchen.
Das sollte aufjedenfall bedeutend einfacher und schneller als jeder händische Leseversuch sein.
Mfg
Rabban
Ich würde eine List<string> verwenden, da kann man ganz schnell und ohne viel Code entsprechende Ergebnisse herausfiltern.
Das funktioniert auch wunderbar, auch die Tipps die oben genannt wurden funktionieren.
Allerdings immer nur für die erste Zeile.
Das alles kannst Du selbst herausfinden (Stichwort Debugging) - zudem handelt es sich hierbei immer noch um Grundlagen.
Beachte [Hinweis] Wie poste ich richtig? 1.1, 1.1.1, 4.x und 2.3 -> Geschlossen