C# – Kleines Programm, Wort in einer Datei suchen

Schwierigkeit:Anfänger Benötigt:SDK NetFramework 2.0 (müsste aber auch mit 1.1 gehen) Das Programm:

Und hier ein Screenshot der Ausgabe(für bessere Sicht draufklicken): screenshot

Aber jetzt zum Code:

Das Gerüst oder auch der Umhang unserer Anwendung. Die System und System.IO brauchen wir um die Member der Klasse aufrufen zu können bzw. die Klassen zu nutzen, z.B. bei Console.WriteLine oder bei SteamWriter. Jedes Programm benötigt eine static void Main, welche beim Aufruf der Anwendung automatisch aufgerufen wird. Diese Methode erstellen wir in der Klasse App.

string[] args sind die Parameter, welche wir später nach dem Namen der Anwendung in die Konsole eingegeben werden. Dies wird der Dateiname sein und das Wort das gesucht werden soll. Als nächstes kommt eine "Sicherheitsabfrage":

Sie gibt einen Fehler aus wenn nicht zwei Werte hinter die Exe geschrieben wurden. Mit Length rufen wir hier die Anzahl der Felder des Strings args ab.

Dann wird die Datei eingelesen bis zum Ende und in den String inhalt gesteckt, der wiederum wird in den String inhaltA gesteckt.

Mit IndexOf() suchen wir nun wo das erste mal das Wort vorkommt. args[1] entspricht dem Parameter mit dem Wert des Wortes nach dem wir suchen. Von IndexOf bekommen wir einen Wert zurück mit der Position an der sich das Wort befindet, sollte das Wort nicht vorhanden sein, ist die Position -1, wenn nicht ist sie größer und wir zählen eins hoch. Damit wir dann aber nicht immer das selbe Wort finden, beachten wir bei der nächsten Prüfung nur noch den Teil hinter dem gefundenen Wort. Nun folgt noch ne kleine Ausgabe:

Und fertigt ist das Programm, wichtig bei Console.Write oder WriteLine – Variablen nie in Anführungszeichen schreiben.

13 thoughts on “C# – Kleines Programm, Wort in einer Datei suchen

  1. Hmm…

    So lernt man also mit der Zeit C in dem man sich so tutorials anschaut um die Syntax zu verstehen. Das ganze erinnert mich irgendwie stark an andere Hochsprachen, auch wenn hier einige Befehle anders sind als zum Beispiel bei Java. Da bräuchte ich ne Befehlsreferenz… Womit Compilierst du?

    Und Mono kannst du nicht zufällig? Ich bin doch nur armer Debian User^^

    Gruß

    Bastian

  2. Hallo Bastian,

    Mono ist sozusagen das Net Framework von Microsoft für Linux. Unter Windows compiler ich meine C# Programme mit dem .Net Framework SDK.
    Als Editor benutze ich aber den SharpDeveloper, jedoch ist es einfacher beim Compilern den .Net Framework SDK zu benutzen, wenn es sich nur um eine einzelne Datei handelt. Da man im SharpDeveloper dazu gleich ein Projekt erstellen muss.

    Die Syntax von C# ähnelt der von Java, da C# eine Art Mischung von C++ und Java darstellt.

    Und eigentlich sollte der gleiche Quellcode unter Linux und Microsoft ohne Probleme zu compilern sein, außer man benutzt eventuell System-Befehle die eben nur auf ein bestimmtes Betriebssystem zugeschnitten sind. Zu dem hängt Mono ein wenig hinter her, somit kann man die neue Syntax-Befehle auch nicht gleich unter Mono benutzen.

  3. Hmm… Also könnte ich das ganze unter Linux mit Make einfach so durchkompilieren? Ginge mir um das andere Programm, wo ich geschrieben hatte ( nur Testweise, bis ich selbst weit genug bin… ). das ganze klingt spannend *g*

    Nur wie ich ne Gui aufbau wäre nun noch interessant…

    Ich probier mal rum!

    Gruß

    bastian

  4. hat sich erledigt! Aber wo tippe und starte ich die Konsole? jedesmal beim starten, zeigt er an: “ein Wort und Datei oder nur eins Angeben oder es wurde zuviel angeben” und schließt sich direkt!

  5. kann man das noch so abändern, das der mir z.b wenn ich druck suche nich auch noch druckluft dazuzählt? ich hab das mit einem leerzeichen nach dem wort gemacht aber dann findet er diesmal z.b druck. nicht ..

  6. Um die Suche entsprechend anzupassen, muss die Syntax

  7. das hab ich jetzt nicht ganz so verstanden.. ich kenn die methode Regex aber ich weiß nich wie ich die hier genau einsetzten soll.. brauch ich dann indexOf nicht mehr?

  8. Du musst:

    1. static void Main(string[] args)
      {
      //args = new string[] { “text.txt”, “CSU” };
      if (args.Length != 2)
      {
      Console.WriteLine(“Fehlerhafte Eingabe, bitte ein Wort und eine Datei eingeben als Parameter”);
      }
      else
      {
      StreamReader datei = new StreamReader(args[0]);
      string inhalt = datei.ReadToEnd();
      datei.Close();

      System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(args[1]);
      System.Text.RegularExpressions.MatchCollection matches = regex.Matches(inhalt);

      int zaehler = matches.Count;

      Console.WriteLine(“Anzahl der Wörter im Text: ” + zaehler);
      Console.WriteLine(“Name der Datei: ” + args[0]);
      Console.WriteLine(“Name des Wortes: ” + args[1]);
      Console.WriteLine(“n Inhalt der Datei: ” + inhalt);
      }
      }

  9. Hallo!
    Super cool das Programm, es entspricht ansatzweise meiner Hausarbeit 😉
    Nur muss ich ein bestimmtes Wort nicht suchen, sondern:

    Ein Programm schreiben, was zählt wie oft ein Wort in einer Textdatei vorkommt.
    Das gesuchte Wort und der Name der Textdatei sollen über die Kommandozeile eingegeben werden.
    Der Name der Datei soll aus der Kommandozeile entnommen werden.

    Wie schaut das denn aus??

    1. In dem Programm wird der Dateiname (args[0]) und das gesuchte Wort (args[1]) bereits über die Console beim Programmstart mit gegeben. Dies kann natürlich durch die Eingabe Aufforderungen am Anfang des Programmes ersetzt werden.

      Die Variable “zaehler” zählt bereits, wie oft das Wort in der Datei vorkommt.

Leave a Reply

Your email address will not be published. Required fields are marked *