Découper efficacement une String (parsage)(String.split,Tokenizer,etc)
Découper efficacement une String (parsage)(String.split,Tokenizer,etc) - Java - Programmation
MarshPosté le 23-07-2008 à 03:21:52
Bonjour tout le monde, J'ai un petit problème d'analyse de chaînes de caractères. En effet, j'ai un fichier qui contient à partir d'un certain endroit, des lignes contenant : -N nombres espacés par un nombre inconnu d'espaces/tabulations et que j'aimerai réussir récupérer. -du texte qui ne m'interesse pas
J'ai commencé par utiliser des StreamTokenizer malheuresement, je n'arrivais pas à bien détecter les changements de lignes qui me sont nécéssaires.
Ensuite, j'ai utilisé des StringTokenizer en me disant que je pourrait faire pareil qu'avec les StreamT. en lisant les lignes du fichier une par une ( while ((str=lecteurAvecBuffer.readLine())!=null) ou quelque chose comme ça) sauf que le StringTokenize m'a l'air ben moins puissant. J'ai voulu perséverer sur la lecture ligne par ligne en séparant les nombres du restes avec la méthode split et une regexp qui me semblait judicieuse ( String[] numbers=str.split("[^.0-9]*" ); ) mais j'ai l'impression qu'elle ne prenait pas le plus grand motif matché possible en tant que séparateur.
Finalement, je ne sais pas quelle est la bonne marche à suivre...
Au autre problème que j'ai résolu est celui du parsage d'une ligne contenant des infos entre guillemets par :
Code :
// on ajoute des guillemets pour que la ligne suivante marche
Marsh Posté le 23-07-2008 à 03:21:52
Bonjour tout le monde,
J'ai un petit problème d'analyse de chaînes de caractères.
En effet, j'ai un fichier qui contient à partir d'un certain endroit, des lignes contenant :
-N nombres espacés par un nombre inconnu d'espaces/tabulations et que j'aimerai réussir récupérer.
-du texte qui ne m'interesse pas
J'ai commencé par utiliser des StreamTokenizer malheuresement, je n'arrivais pas à bien détecter les changements de lignes qui me sont nécéssaires.
Ensuite, j'ai utilisé des StringTokenizer en me disant que je pourrait faire pareil qu'avec les StreamT. en lisant les lignes du fichier une par une
( while ((str=lecteurAvecBuffer.readLine())!=null) ou quelque chose comme ça) sauf que le StringTokenize m'a l'air ben moins puissant.
J'ai voulu perséverer sur la lecture ligne par ligne en séparant les nombres du restes avec la méthode split et une regexp qui me semblait judicieuse ( String[] numbers=str.split("[^.0-9]*" ); ) mais j'ai l'impression qu'elle ne prenait pas le plus grand motif matché possible en tant que séparateur.
Finalement, je ne sais pas quelle est la bonne marche à suivre...
Au autre problème que j'ai résolu est celui du parsage d'une ligne contenant des infos entre guillemets par :
ce qui marche mais ne doit pas du tout être LA façon de faire. Est ce que quelqu'un aurait mieux à proposer?
Je suis ouvert à toute remarque constructive.
Merci d'avance.