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

  FORUM HardWare.fr
  Programmation
  Java

  [Java] Extraire informations d'une String

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java] Extraire informations d'une String

n°1278335
hugo25
Posté le 06-01-2006 à 18:11:54  profilanswer
 

Bonjour,
J'ai une String du genre : nom1(val1) ou nom2(val1,val2)
par exemple cette string peut valoir :  
- random(1.5)
- degree(5.8,5.1)
- ...
Il faut que je sépare cette string en 2 ou 3 string suivant les cas :
- string1 = random ; string2 = 1.5
- string1 = degree ; string2 = 5.8 ; string3 = 5.1
 
Je ne sais pas comment faire, le but étant de faire le plus simplement possible.
 
Merci d'avances pour vos réponses.

mood
Publicité
Posté le 06-01-2006 à 18:11:54  profilanswer
 

n°1278338
jlighty
Posté le 06-01-2006 à 18:21:07  profilanswer
 

il faut parser ta chaine (à moins qu'on puisse utiliser des regulars)
1- détecter l'ouverture de la parenthèse "(" via last_indexof()
2- avec substring(), tu devras pouvoir obtenir le nom de la variable (random, degree...)
puis tu répètes les opérations (quelques modifications sont nécessaire)   pour obtenir les valeurs.

n°1278347
hugo25
Posté le 06-01-2006 à 19:03:25  profilanswer
 

J'ai fait :

Code :
  1. // compilation de l'expression reguliere
  2. Pattern pattern1 = Pattern.compile("/(\\w+)(\\((\\d+)(,(\\d+))?\\))?/" );
  3. // création d’un moteur de recherche
  4. Matcher matcher1 = pattern1.matcher(federation1.getReseau().getGraphCreationAlgorithm());
  5. System.out.println(federation1.getReseau().getGraphCreationAlgorithm());
  6. * String algoTradersQuantity = matcher1.group(1);
  7. String val1TradersQuantity = matcher1.group(3);
  8. String val2TradersQuantity = matcher1.group(5);


Mais j'ai l'erreur " java.lang.IllegalStateException: No match found"  à la ligne *. Je ne comprend pas pourquoi.

n°1278353
jlighty
Posté le 06-01-2006 à 19:28:17  profilanswer
 

avec une regular comme ceci :

"/^(\w+)\((\d+),(\d+)\)/"


attention ça ne marche (si ça marche :D ) uniquement pour une chaîne décrite de cette manière :
variable(valeur1,valeur2)


Message édité par jlighty le 06-01-2006 à 19:29:20
n°1278604
hugo25
Posté le 07-01-2006 à 11:52:07  profilanswer
 

J'ai écrit la regexpr pour extraire les données :
 

Code :
  1. /  (\w+)  (  \(  (\d+)  ( ,  (\d+) )?  \)  )?  /


 
J'ai fait :

Code :
  1. String[] champs = chaine.split("/(\\w+)(\\((\\d+)(,(\\d+))?\\))?/" );


Mais j'obtiens juste comme résultat :
champs[0] = degree(5.8,5.1)
champs[1] = null

n°1278634
hugo25
Posté le 07-01-2006 à 12:31:12  profilanswer
 

Je ne comprend pas pourquoi ce code ne marche pas :  
 

Code :
  1. // compilation de l'expression reguliere
  2. Pattern pattern1 = Pattern.compile("/(\\w+)(\\((\\d+)(,(\\d+))?\\))?/" );
  3. // création d’un moteur de recherche
  4. Matcher matcher1 = pattern1.matcher(s1);
  5. System.out.println(s1); -> degree(2,0)
  6. System.out.println(matcher1.groupCount()); -> 5
  7. System.out.println(matcher1.group(0)); -> java.lang.IllegalStateException: No match available


 
Il trouve bien le bon nombre groupe, mais des que j'accede au 1er groupe j'ai une erreur. mbre groupe, mais des que j'accede a 1 groupe j'ai une erreur.


Message édité par hugo25 le 07-01-2006 à 14:16:14

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

  [Java] Extraire informations d'une String

 

Sujets relatifs
[Java 1.5]Afficher la date et l'heureCréer une classe en C++ qui contient les éléments de string.h
Equivalent OpenCV Java[JAVA] probleme d'affichage caracteres spéciaux
Compiler Latek à partir de JAVAEquivalent YACC, FLEX en java
(résolu) vba excel : probleme de typage stringLancer script Perl dans du code Java
[java] décompilateur j2MEAlgo du facteur en JAVA
Plus de sujets relatifs à : [Java] Extraire informations d'une String


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