Ich habe Probleme, die Anzahl der Wörter in einer Datei zu zählen. Der Ansatz, den ich nehme, ist, wenn ich ein Leerzeichen oder eine neue Zeile sehe, dann weiß ich, ein Wort zu zählen.
Das Problem ist, dass wenn ich mehrere Zeilen zwischen Absätzen habe, habe ich sie auch als Wörter gezählt. Wenn Sie sich die readFile () -Methode ansehen, können Sie sehen, was ich gerade mache.
Könnten Sie mir helfen und mich in die richtige Richtung führen, wie ich das beheben kann?
Beispiel für eine Eingabedatei (einschließlich einer leeren Zeile):
%Vor% Ich würde Ihren Ansatz ein wenig ändern. Zuerst würde ich ein BufferedReader
verwenden, um die Datei Zeile für Zeile mit readLine()
zu lesen. Teilen Sie dann jede Zeile mit whitespace mit String.split("\s")
und verwenden Sie die Größe des resultierenden Arrays, um zu sehen, wie viele Wörter sich in dieser Zeile befinden. Um die Anzahl der Zeichen zu erhalten, können Sie entweder die Größe jeder Zeile oder jedes geteilten Wortes betrachten (abhängig davon, ob Sie Whitespace als Zeichen zählen möchten).
Sie können einen Scanner mit einem FileInputStream anstelle von BufferedReader mit einem FileReader verwenden. Zum Beispiel: -
%Vor%Das ist nur ein Gedanke. Es gibt einen sehr einfachen Weg, es zu tun. Wenn Sie nur die Anzahl der Wörter und nicht die tatsächlichen Wörter benötigen, dann verwenden Sie einfach Apache WordUtils
%Vor%Hack-Lösung
Sie können die Textdatei in eine Zeichenfolge var lesen. Teilen Sie dann die Zeichenfolge in ein Array unter Verwendung eines einzelnen Leerzeichen als Trennzeichen StringVar.Split ("").
Die Array-Anzahl entspricht der Anzahl der Wörter in der Datei. Natürlich würde Ihnen das nicht die Zeilennummern anzeigen.
Ich denke, ein korrekter Ansatz wäre mit Regex:
%Vor%Ich hoffe, es hilft. Die Bedeutung "\ s +" ist in Muster javadoc
Sehen Sie sich meine Lösung hier an, es sollte funktionieren. Die Idee ist, alle unerwünschten Symbole aus den Wörtern zu entfernen, diese Wörter dann zu trennen und sie in einer anderen Variablen zu speichern, ich benutzte ArrayList. Indem Sie die Variable "excludedSymbols" anpassen, können Sie weitere Symbole hinzufügen, die Sie von den Wörtern ausschließen möchten.
%Vor%