2011-10-05 2 views
1

Quelqu'un s'il vous plaît modifier mon titre pour rendre cette question plus claire.Comment lire uniquement les informations pertinentes d'un fichier et ignorer tout le reste?

Il est plus facile de montrer par un exemple:

Contenu de myfile.txt:

10/05/2011: 10 
10/05/2011: 45.4 
10/05/2011: 12.1 

Je veux lire les chiffres après la date (10, 45,4, 12,1) en utilisant BufferedReader et stocker dans une liste. Comment ferais-je cela? J'utilise la méthode readLine() maintenant pour lire mes données, mais lit toute la ligne. Je ne veux pas stocker la date dans ma liste, juste les chiffres. C'est possible?

+1

[Qu'avez-vous essayé?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

Répondre

3

Oui bien sûr, bien que vous deviez lire toute la ligne en premier, une fois que vous avez fait cela, vous pouvez écrire une expression régulière simple pour choisir ce que vous voulez dans ce numéro de cas.

Alternativement puisque les chiffres sont toujours après ":", ce sera aussi travailler

String[] parts = myReadLine.split(":"); 
String numbers = parts[1]; 
+0

Pourriez-vous s'il vous plaît donner un exemple de comment faire cela? Désolé, je n'ai pas beaucoup d'expérience avec Reg Expressions en dehors du cours Theoretical Comp Sci. –

+0

@Blue Pony Inc oui vous pouvez utiliser celui fourni, c'est le moyen le plus simple. –

2

Quelque chose comme:

String number = br.readLine().split(":")[1]; 

... il suffit d'ajouter une erreur correcte vérifier ....

+0

Ou, si chaque ligne commence par une date, on peut simplement prendre 'substring (12)'. –

+0

Oui, assurez-vous que la partie date est toujours 12 caractères (01/05/2011:) et jamais comme 1/5/2011 – Kristian

1

Vous pouvez utiliser la méthode subString de la classe de chaînes pour obtenir la partie requise de la ligne.

Par exemple. Ou vous pouvez obtenir l'index de ':' et utiliser cet index comme premier paramètre de la méthode de sous-chaîne.

int i = line.indexOf(": "); 
string number = line.substring(i, i+2); 
1

Je ne parviens pas à modifier votre message parce que je ne dispose pas des privilèges assez élevés, mais ce processus est appelé analyse syntaxique.

L'algorithme est

while(!EOF) 
{ 
    //read until ':' 
    //put chars after ':' into a string(or char[]) until you reach a \n 
} 
Questions connexes