IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Extraire informations d'une String


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2004
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 65
    Points : 33
    Points
    33
    Par défaut Extraire informations d'une String
    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.

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Est ce que tu as le droit d'utiliser les librairies java , style Stringtokenizer (tres pratique) : ou juste charAt () et substring ()

  3. #3
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Utilise la methode split() de la classe String avec une expression rationnelle.
    Romain Guy
    Android - Mon livre - Mon blog

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2004
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 65
    Points : 33
    Points
    33
    Par défaut
    J'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // compilation de l'expression reguliere
    Pattern pattern1 = Pattern.compile("/(\\w+)(\\((\\d+)(,(\\d+))?\\))?/");
    // création d’un moteur de recherche
    Matcher matcher1 = pattern1.matcher(federation1.getReseau().getGraphCreationAlgorithm());
     
    System.out.println(federation1.getReseau().getGraphCreationAlgorithm());
    * String algoTradersQuantity = matcher1.group(1);
    String val1TradersQuantity = matcher1.group(3);
    String val2TradersQuantity = matcher1.group(5);
    Mais j'ai l'erreur " java.lang.IllegalStateException: No match found" à la ligne *. Je ne comprend pas pourquoi.

  5. #5
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Si tu utilises split() ca evite de creer un Pattern, un Matcher, etc.
    Romain Guy
    Android - Mon livre - Mon blog

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mai 2004
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 65
    Points : 33
    Points
    33
    Par défaut
    J'ai écrit la regexpr pour extraire les données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /  (\w+)  (  \(  (\d+)  ( ,  (\d+) )?  \)  )?  /
    J'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] champs = chaine.split("/(\\w+)(\\((\\d+)(,(\\d+))?\\))?/");
    Mais j'obtiens juste comme résultat :
    champs[0] = degree(5.8,5.1)
    champs[1] = null

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mai 2004
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 65
    Points : 33
    Points
    33
    Par défaut
    Je ne comprend pas pourquoi ce code ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // compilation de l'expression reguliere
    Pattern pattern1 = Pattern.compile("/(\\w+)(\\((\\d+)(,(\\d+))?\\))?/");
    // création d’un moteur de recherche
    Matcher matcher1 = pattern1.matcher(s1);
    System.out.println(s1); -> degree(2,0)
    System.out.println(matcher1.groupCount()); -> 5
    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.

  8. #8
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Enleve les / au debut et a la fin, ce n'est pas du Perl.
    Romain Guy
    Android - Mon livre - Mon blog

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mai 2004
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 65
    Points : 33
    Points
    33
    Par défaut
    Oui, merci j'ai trouvé. Je ne sais pas pourquoi j'ai rajouté ces /, mais ca m'a fait perdre du temps. J'ai enlevé les / et remis ^ au début et $ à la fin et ca marche maintenant.

    Merci à tous pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Extraire information d'une liste
    Par guigui69 dans le forum Excel
    Réponses: 5
    Dernier message: 12/09/2014, 22h07
  2. extraire mots dans une string
    Par scarfunk dans le forum VB.NET
    Réponses: 13
    Dernier message: 23/04/2010, 15h07
  3. Extraire Informations d'une CString
    Par Scuz60 dans le forum MFC
    Réponses: 8
    Dernier message: 27/07/2007, 15h42
  4. [C#] Comment extraire les parties d'une string ?
    Par mrpowerboy dans le forum C#
    Réponses: 3
    Dernier message: 21/02/2006, 09h10
  5. Extraire un segment d'une string
    Par Patrick Seuret dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/11/2005, 18h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo