Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3002 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Découper efficacement une String (parsage)(String.split,Tokenizer,etc)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Découper efficacement une String (parsage)(String.split,Tokenizer,etc)

n°1763511
Nouveau_ve​nu
Posté le 23-07-2008 à 03:21:52  profilanswer
 

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 :
  1. // on ajoute des guillemets pour que la ligne suivante marche
  2. String str="\""+lecteurAvecBuffer.readLine()+"\"";
  3. // ce qui sépare 2 champs est 'guillemet' suivi d'un nombre quelconque de non-'guillemet' suivi d'un 'guillemet'
  4. String[] result1=str.split("\"[^\"]*\"" );
  5. // result1 commencait par une chaine vide en théorie (création artificielle d'un champs)
  6. result2=new String[result1.length-1];
  7. for (int i=0; i<result2.length; i++)
  8.          {
  9.           result2[i]=result1[i+1];
  10.          }


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.

mood
Publicité
Posté le 23-07-2008 à 03:21:52  profilanswer
 

n°1763698
el muchach​o
Comfortably Numb
Posté le 23-07-2008 à 13:56:48  profilanswer
 

String[] numbers=str.split("[^.0-9]*" );
C'est pas bon, c'est String[] numbers=str.split("\s" );


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Découper efficacement une String (parsage)(String.split,Tokenizer,etc)

 

Sujets relatifs
probleme de split d'une variableLancer une méthode javascript à partir d'un string
comment convertir un StreamResult en String ?Decouper chaine de caractere (sh)
[Réglé] ip:port en char traduire en decimal. master querysupprimer un élément de ma table de string
Tableau de String + Entier -- Premier Prob Résolu[PHP] Découper une image
"unterminated string literal" oui mais je ne vois rien (Javascript) [RESOLU] split d'un String/expression reguliere
Plus de sujets relatifs à : Découper efficacement une String (parsage)(String.split,Tokenizer,etc)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR