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:

using System;
using System.IO;
class App {
static void Main(string[] args)
{
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();
string inhaltA = inhalt;
datei.Close();
int pos=0;
int zaehler=0;
while(pos>-1)
{
pos=inhalt.IndexOf(args[1]);
if(pos>-1){
zaehler++;
inhalt=inhalt.Substring(pos+args[1].Length);
}
}
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: “+inhaltA);
}

}
}

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

Aber jetzt zum Code:

using System;
using System.IO;
class App {

}

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.

static void Main(string[] args)
{

}

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”:

if(args.Length!=2)
{
Console.WriteLine(“Fehlerhafte Eingabe, bitte ein Wort und eine Datei eingeben als Parameter”);
}
else
{

}

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.

StreamReader datei = new StreamReader(args[0]);
string inhalt = datei.ReadToEnd();
string inhaltA = inhalt;
datei.Close();

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

int pos=0;

int zaehler=0;
while(>-1)
{
pos=inhalt.IndexOf(args[1]);
if(pos>-1){
zaehler++;
inhalt=inhalt.Substring(pos+args[1].Length);
}
}

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:

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: “+inhaltA);

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