Laden...

Satz durchsuchen - Falsches Ergebnis falls Leerzeichen am Ende des Satzes

Erstellt von Irminar vor 8 Jahren Letzter Beitrag vor 8 Jahren 797 Views
I
Irminar Themenstarter:in
5 Beiträge seit 2015
vor 8 Jahren
Satz durchsuchen - Falsches Ergebnis falls Leerzeichen am Ende des Satzes

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.

P
1.090 Beiträge seit 2011
vor 8 Jahren

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:

Clean Code Developer
Entwurfsmuster
Anti-Pattern

I
Irminar Themenstarter:in
5 Beiträge seit 2015
vor 8 Jahren

Hallo,

danke für den Artikel ich hab ihn mir mal als Bookmark gesetzt und werde ihn mal durchlesen.

P
1.090 Beiträge seit 2011
vor 8 Jahren

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:

Clean Code Developer
Entwurfsmuster
Anti-Pattern

J
251 Beiträge seit 2012
vor 8 Jahren

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