Erstellen eines Java-Programms zur Suche einer Datei nach einem Bestimmten Wort
Ich bin nur zu lernen, die Sprache und fragte mich, was für eine Erfahrung mehr Java-Programmierer tun würde, in der folgenden situation?
Ich würde gern ein java-Programm, das durchsucht eine angegebene Datei für alle Instanzen für ein bestimmtes Wort.
Wie würden Sie gehen über diese, bedeutet, dass Java-API kommt mit einer Klasse, bietet file-scan-Fähigkeiten oder müsste ich schreiben, meine eigene Klasse zu tun?
Vielen Dank für jede Eingabe,
Dom.
Was bestimmtes Wort?
Ist die Suche case-insensitive? z.B. bedeutet "Katze" match "Katze"?
Ist die Suche case-insensitive? z.B. bedeutet "Katze" match "Katze"?
grep -ioE "\bword\b" < file
?InformationsquelleAutor Dom Minic | 2010-12-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die java-API bietet die
java.util.Scanner
Klasse, die Ihnen erlaubt zu Scannen, die über eine input-Datei.Je nachdem, wie Sie beabsichtigen, dies zu nutzen, jedoch, könnte dies nicht die beste Idee. Ist die Datei sehr groß ist? Sind Sie auf der Suche nur eine Datei, oder versuchen Sie, halten eine Datenbank mit vielen Dateien und eine Suche nach Dateien innerhalb? In diesem Fall möchten Sie vielleicht, um eine weiter konkretisiert Motor wie lucene.
InformationsquelleAutor Reese Moore
Es sei denn, die Datei ist sehr groß, ich würde
Finden alle den text zwischen Ihrem Wort, das Sie verwenden können, split() und verwenden Sie die Länge des strings, um die position zu bestimmen.
Und watch out für die "regex-Injektion" wenn word enthält einige meta-Zeichen, die speziell zu mustern.
Wie definierst du "sehr groß"?
InformationsquelleAutor Peter Lawrey
Wie andere haben darauf hingewiesen, man könne die
Scanner
Klasse.Ich Ihre Frage in eine Datei
data.txt
und lief Folgendes Programm:Ausgabe:
Dem Muster gesucht,
(?i)\bjava\b
, bedeutet das Folgendes:(?i)
biegen Sie auf die groß-und Kleinschreibung wechseln\b
bedeutet ein Wort Grenzejava
ist der string, der gesucht\b
ein Wort Grenze wieder.Wenn der Suchbegriff kommt der user, oder wenn es aus irgendeinem anderen Grund, kann Sonderzeichen enthalten, schlage ich vor, Sie
\Q
und\E
rund um den string, wie zitiert, der alle Zeichen zwischen, (und wenn Sie wirklich wählerisch sind, stellen Sie sicher, dass die Eingabe nicht enthalten\E
selbst).InformationsquelleAutor aioobe