2 votes

Analyse d'un fichier texte à l'aide d'un scanner java

Je suis en train d'essayer de créer une méthode qui analyse un fichier texte et renvoie une chaîne de caractères qui est l'URL après les deux-points. Le fichier texte ressemble à ceci (c'est pour un bot) :

mot clé : URL
mot clé,mot clé : URL

donc chaque ligne se compose d'un mot clé et d'une URL, ou de plusieurs mots clés et d'une URL.

Est-ce que quelqu'un pourrait me donner un peu d'orientation sur comment faire cela ? Merci.

Je crois que j'ai besoin d'utiliser un scanner mais je n'ai rien trouvé sur quelqu'un voulant faire quelque chose de similaire à ce que je veux faire.

Merci.

modification : mon essai en utilisant les suggestions ci-dessous. Ne fonctionne pas tout à fait. Toute aide serait appréciée.

    public static void main(String[] args) throws IOException {
    String sCurrentLine = "";
    String key = "hello";

    BufferedReader reader = new BufferedReader(
            new FileReader(("sites.txt")));
    Scanner s = new Scanner(sCurrentLine);
    while ((sCurrentLine = reader.readLine()) != null) {
        System.out.println(sCurrentLine);
        if(sCurrentLine.contains(key)){
            System.out.println(s.findInLine("http"));
        }
    }
}

sortie :

    hello,there:http://www.facebook.com
null
whats,up:http:/google.com

sites.txt:

   hello,there:http://www.facebook.com
whats,up:http:/google.com

2voto

Boris the Spider Points 20200

Vous devriez lire le fichier ligne par ligne avec un BufferedReader comme vous le faites, je recommanderais de parser le fichier en utilisant des expressions régulières.

Le motif

(?<=:)http://[^\\s]++

Fera l'affaire, ce motif dit :

  • http://
  • suivi par n'importe quel nombre de caractères qui ne sont pas des espaces (plus d'un) [^\\s]++
  • et précédé par deux points (?<=:)

Voici un exemple simple en utilisant une String pour lire votre fichier :

public static void main(String[] args) throws Exception {
    final String file = "bonjour,comment:http://www.facebook.com\n"
            + "quoi,de neuf:http://google.com";
    final Pattern pattern = Pattern.compile("(?<=:)http://[^\\s]++");
    final Matcher m = pattern.matcher("");
    try (final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(file.getBytes("UTF-8"))))) {
        String line;
        while ((line = bufferedReader.readLine()) != null) {
            m.reset(line);
            while (m.find()) {
                System.out.println(m.group());
            }
        }
    }
}

Sortie :

http://www.facebook.com
http://google.com

0voto

slanecek Points 716

Utilisez BufferedReader, pour l'analyse de texte vous pouvez utiliser des expressions régulières.

0voto

PythaLye Points 314

Vous devriez utiliser la méthode split :

String strCollection[] = yourScannedStr.Split(":", 2);
String extractedUrl = strCollection[1];

-1voto

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X