Hallo mir ist leider grade kein besserer Titel eingefallen,
ich versuche Gerade C# zu erlernen mit dem Buch "Schrödinger Programmiert C#" aktuell klappt alles ganz gut, jedoch habe ich jetzt eine Verständnisfrage.
Auf seite 102 soll man eine Suche Programmieren mithilfe von for-Schleifen, das ergebnis ist folgender Code:
static void Main(string[] args)
{
string text = String.Empty;
string searchTerm = "";
bool found = false;
Console.WriteLine("Bitte Text eingeben: ");
text = Console.ReadLine();
Console.WriteLine("Bitte Suchbegriff eingeben");
searchTerm = Console.ReadLine();
// Code
for (int i = 0; i < text.Length - searchTerm.Length; i++)
{
found = true;
for (int j =0; j < searchTerm.Length; j++)
{
if (text [i + j] != searchTerm[j])
{
found = false;
break;
}
}
if (found)
{
break;
}
}
Console.WriteLine("Gefunden? " + found );
Console.ReadKey();
}
Die suche funktioniert auch soweit, nur wenn ich nach dem letzten Wort suche gibt es ein Problem.
Beispiel:
Eingebener Text: Hallo wie geht es dir
Suchwort: es
Ergebnis = true
Beispiel2:
Eingegebener Text: Hallo wie geht es dir
Suchwort: dir
Ergebnist = false
Wenn ich jetzt aber "Hallo wie geht es dir " mit einem leerzeichen nach dem dir mache ergibt die suche nach "dir" wieder true. Ich würde gerne wissen wieso das so ist, mit dem Index kann es ja nichts zu tun haben da die Suche nach "Hallo" also dem Ersten wort auch klappt.
Hoffe mich kann jemand erleuchten 😃
Vielen Dank schonmal
LG
Edit: Ich hab jetzt noch ein bisschen rumgebastelt und die erste for schleife geändert:
for (int i = 0; i < text.Length + 1- searchTerm.Length; i++)
Jetzt funktioniert die Suche auch mit dem letzten Wort, die Frage ist, ob die Lösung "dirty" ist oder ob das so passt.
Um selbst solche Probleme zu lösen, kann dir der Artikel weiterhelfen.
[Artikel] Debugger: Wie verwende ich den von Visual Studio?
Grundlegend bis du aber auf dem richtigen Weg, mit Leerzeichen am ende funktioniert es ja.
Also scheint dein äußerer Index um 1 zu klein zu sein. 😉
Sollte man mal gelesen haben:
Hallo,
danke für den Artikel ich hab ihn mir mal als Bookmark gesetzt und werde ihn mal durchlesen.
Jetzt funktioniert die Suche auch mit dem letzten Wort, die Frage ist, ob die Lösung "dirty" ist oder ob das so passt.
Es ist ja eine Übungsaufgabe, damit du den Umgang mit Schleifen lernst. Dafür ist es ok.
Sollte man mal gelesen haben:
Ein kleiner Hinweis für evtl. zukünftige Beiträge: Es ist schön, dass du die Lösung deines Problems geliefert hast. Am besten eignet sich dafür ein eigenständiger Beitrag statt rein editiert in den Anfangspost. Dies hängt mit dem Lesefluss zusammen falls noch wer zufällig oder bewusst hier rein schnuppert und falls niemand auf den Thread antwortet und man selbst auf die Lösung kommt, dass der Thread nicht in der Liste der Threads ohne Antworten landet