Benutzer mit den meisten Antworten
Dateienstrings

Frage
Antworten
-
Hallo, dazu gibt es verschiedene Wege.
Allen gemeinsam ist aber, das man erst einmal an den Dateiinhalt kommen muss:string content = File.ReadAllText(@"D:\test\test.txt");//Datei lesen
Nun kannst du beispielsweise den Text durch gehen und nach und Nach die Positionen der einzelnen Wörter abfragen. Sobald man -1 erhält, gibt es kein weiteres Vorkommen mehr:
/// <summary>
/// Zählt die Wörter in einer Zeichenfolge.
/// </summary>
static int CountWords(string content, string search, StringComparison comparison)//Achtung, kein Exceptionhandling o.ä.
{
int result = 0;//Zähler
int current = -1;//Aktuell gefundene Position
while ((current = content.IndexOf(search, current+1, comparison)) > -1)//Solange durchlaufen, wie ein Wort ab Letzter Position gefunden wurde.
++result;//Wort gefunden
return result;//Zurück geben
}Diese Methode nimmt auch einen Parameter an, der angibt, wie die Vorkommen gefunden werden sollen (StringComparison). Nun findet diese Methode aber auch "Dateiinhalt", wenn du nach "Datei" suchst. Um dieses Verhalten weg zu bekommen, musst du auch nch nach den Leerzeichen vor und hinter dem Wort fragen. Bzw. auch Zeilenumbruch, Stringanfang und Stringende. Aber auch die Satzzeichen solltest du beachten.
Weitere Zähl-Möglichkeiten gibt es im Internet: Seite 1, Seite 2
Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.- Als Antwort markiert Ciprian Bogdan Mittwoch, 23. Oktober 2013 08:34
-
Hi,
alternativ geht auch bspw. sowas:
String wordsAsString = "Abc,Def,Ghi,Abc,Abc,Xyz,Ghi"; List<String> words = wordsAsString.Split( ",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries ).ToList(); var wordListWithCount = words.GroupBy( g => g ).Select( i => new { Wort = i.Key, Anzahl = i.Count() } );
In wordListWithCount steht dann sowohl das jeweilige Wort als auch die Anzahl der Vorkommen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Ciprian Bogdan Mittwoch, 23. Oktober 2013 08:34
Alle Antworten
-
Hallo, dazu gibt es verschiedene Wege.
Allen gemeinsam ist aber, das man erst einmal an den Dateiinhalt kommen muss:string content = File.ReadAllText(@"D:\test\test.txt");//Datei lesen
Nun kannst du beispielsweise den Text durch gehen und nach und Nach die Positionen der einzelnen Wörter abfragen. Sobald man -1 erhält, gibt es kein weiteres Vorkommen mehr:
/// <summary>
/// Zählt die Wörter in einer Zeichenfolge.
/// </summary>
static int CountWords(string content, string search, StringComparison comparison)//Achtung, kein Exceptionhandling o.ä.
{
int result = 0;//Zähler
int current = -1;//Aktuell gefundene Position
while ((current = content.IndexOf(search, current+1, comparison)) > -1)//Solange durchlaufen, wie ein Wort ab Letzter Position gefunden wurde.
++result;//Wort gefunden
return result;//Zurück geben
}Diese Methode nimmt auch einen Parameter an, der angibt, wie die Vorkommen gefunden werden sollen (StringComparison). Nun findet diese Methode aber auch "Dateiinhalt", wenn du nach "Datei" suchst. Um dieses Verhalten weg zu bekommen, musst du auch nch nach den Leerzeichen vor und hinter dem Wort fragen. Bzw. auch Zeilenumbruch, Stringanfang und Stringende. Aber auch die Satzzeichen solltest du beachten.
Weitere Zähl-Möglichkeiten gibt es im Internet: Seite 1, Seite 2
Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.- Als Antwort markiert Ciprian Bogdan Mittwoch, 23. Oktober 2013 08:34
-
Hi,
alternativ geht auch bspw. sowas:
String wordsAsString = "Abc,Def,Ghi,Abc,Abc,Xyz,Ghi"; List<String> words = wordsAsString.Split( ",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries ).ToList(); var wordListWithCount = words.GroupBy( g => g ).Select( i => new { Wort = i.Key, Anzahl = i.Count() } );
In wordListWithCount steht dann sowohl das jeweilige Wort als auch die Anzahl der Vorkommen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Ciprian Bogdan Mittwoch, 23. Oktober 2013 08:34
-
Hallo albiii,
Konnte Deine Frage hilfreich in diesen Thread beantwortet warden ? Wenn ja, markiere bitte die entsprechenden Antworten.
Danke und Gruß,
Ciprian
Ciprian Bogdan, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.