2017-03-29 2 views
0

Je veux rechercher un fichier txt donné pour un nombre et retourner la ligne où il a été trouvé. Ce nombre peut avoir différents formats. Il peut être écrit avec un, ou. ou quelque chose de complètement différent. Je sais que le numéro d'entrée ressemble toujours à ceci: 100.50; 3424,00; 0.12 ...Java Rechercher un fichier .txt pour un nombre donné avec un format différent (100,50 ou 100,50)

Mon code actuel ne détecte ces numéros que s'ils sont dans une ligne sans autre caractère. Le code divise le nombre en deux parties (100.50 -> avant: 100 et arrière: 50). Ensuite, j'ajoute le caractère générique "." et utiliser la méthode correspond (avant + "." + retour)

Comment puis-je trouver le numéro s'il est dans une ligne qui n'est pas seulement le nombre?

Nous vous remercions de votre aide!

private static int searchTotal(String pictureID, String value) throws IOException { 

    int counter = 0; 
    String front = value.substring(0, value.length() - 3); //dividing the value into 100,50 -> 100 and 50 
    String back = value.substring(value.length() - 2); 

    BufferedReader br = new BufferedReader(
      new FileReader(pathTXTFiles + "/" + pictureID +".txt")); //input txt 
    String s; 

    while ((s = br.readLine()) != null) { 
     counter++; 
     if (s.matches(front + "." + back)) { //searching with the wildcard 
      return counter;   //counter gives me the line of the searched number 
     } 
    } 
    return 0; 
} 
+0

Quelle est votre question? – Berger

+0

Comment puis-je trouver le numéro s'il est dans une ligne qui n'est pas seulement le nombre –

+0

Vous devrez autoriser d'autres caractères avant et après: '' s.matches (". *" + Front + "[., ] "+ back +". * ");' ' – f1sh

Répondre

0

Vous devez permettre à d'autres personnages avant et après:

s.matches(".*"+front + "[.,]" + back+".*"); 

autrement matches ne retourneront vrai si la ligne ne se compose que d'un nombre décimal.