La création d'un Programme Java permettant de Rechercher un Fichier par un Mot Spécifique
Je suis juste à l'apprentissage de cette langue et je me demandais ce qu'est un plus expérience de programmeur Java ferait dans la situation suivante?
Je voudrais créer un programme java qui sera à la recherche d'un fichier spécifié pour toutes les instances d'un mot spécifique.
Comment feriez-vous cela, est que les API Java de venir avec une classe qui fournit des capacités d'analyse de fichier ou devrais-je écrire ma propre classe pour ce faire?
Merci pour toute entrée,
Dom.
Ce mot?
Est la recherche insensible à la casse? par exemple, "Chat" match "chat"?
Est la recherche insensible à la casse? par exemple, "Chat" match "chat"?
grep -ioE "\bword\b" < file
?OriginalL'auteur Dom Minic | 2010-12-02
Vous devez vous connecter pour publier un commentaire.
De l'API java offre la
java.util.Scanner
classe qui vous permettent de numériser à travers un fichier d'entrée.En fonction de comment vous avez l'intention d'utiliser ceci, cependant, cela pourrait ne pas être la meilleure idée. Le fichier est très volumineux? Vous êtes à la recherche d'un seul fichier ou êtes-vous en essayant de garder une base de données de plusieurs fichiers et de recherche pour les fichiers à l'intérieur? Dans ce cas, vous pourriez vouloir utiliser un plus étoffé moteur comme lucene.
OriginalL'auteur Reese Moore
Sauf si le fichier est très gros, je voudrais
De trouver tout le texte entre votre word, vous pouvez utiliser la fonction split() et utiliser la longueur des chaînes de déterminer la position.
Et méfiez-vous des "regex injection" si le mot contient des méta-caractères spécifiques aux modèles.
Comment définissez-vous "très grande"?
OriginalL'auteur Peter Lawrey
Comme d'autres l'ont souligné, vous pouvez utiliser le
Scanner
classe.J'ai mis à votre question dans un fichier,
data.txt
, et a couru le programme suivant:La sortie est:
Le motif recherché,
(?i)\bjava\b
, les moyens suivants:(?i)
tour sur la casse de l'interrupteur\b
signifie qu'un mot boundryjava
est la chaîne de caractères recherchée pour\b
un mot boundry de nouveau.Si le terme de recherche provient de l'utilisateur, ou si pour une autre raison peut contenir des caractères spéciaux, je vous suggère d'utiliser
\Q
et\E
autour de la chaîne, qu'elle cite tous les caractères entre les deux, (et si vous êtes vraiment pointilleux, assurez-vous que l'entrée ne contient pas de\E
lui-même).OriginalL'auteur aioobe