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

Java Discussion :

Extraire un float d'une chaine de caractère


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Par défaut Extraire un float d'une chaine de caractère
    bonjour,

    j'ai besoin d'un petit coup de main j'ai une chaine de caractère telle que :
    ligne ='PB 1245.0/50.0 10-03-09 .........'
    et je veux extraire les valeurs numériques qu'elle contient. J'ai pu extraire la date en la localisant avec le tiret :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int tiret = ligne.indexOf("-");
    					String jour=ligne.substring(tiret-2,tiret);
    					String mois=ligne.substring(tiret,tiret+6);
    Le problème se pose pour extraire les valeurs 1245.0 et 50.0 sachant que le séparateur / peut changer.

    Est ce qu'il y'a une fonction en java qui permet d'extraire un nombre de type float à partir d'une chaine de caractère.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 18
    Par défaut
    Je pense que le plus simple serait de parcourir jusqu'à ce que tu trouve une caractère de type numérique. A partir de là tu construit une chaine avec la liste des caractères numériques que tu trouve, jusqu'à ce que tu trouve un caractère non numérique.
    Tu recommence ainsi de manière itérative jusqu'à la fin de ta chaine, comme cela tu aura la liste complète des floats de ta chaine.

    voici une ebauche de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    char[] maChaine = (char[])ligne.toCharArray();
    List<String> mesFloats = new Vector<String>();
     
    for (int i=0; i< ligne.length(); i++)
    {
      if ((maChaine[i]>='0' && maChaine[i]<='9') || (maChaine[i]=='.'))
      {
        String monFloat = new String("");
        while ((i<ligne.length()) && (maChaine[i]>='0' && maChaine[i]<='9') || (maChaine[i]=='.'))
        {
          monFloat += maChaine[i];
          i++;
        }
        mesFloats.add(monFloat);
      }
    }

    A partir de là, il ne te reste plus qu'à parser tout cela en float et le tour est jouer.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 73
    Par défaut
    Bonjour,

    Tu peux aussi utiliser une expression régulière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Pattern p = Pattern.compile(".*?(\\d+\\.\\d+?|\\d+).*?");
    Matcher m = p.matcher("PB 1245.0/50.0 10-03-09....");
    while (m.find()) {
       System.out.println(m.group(1));
    }
    T'affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    1245.0
    50.0
    10
    03
    09
    Bonne après midi et bon code

  4. #4
    Membre averti
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Par défaut
    je ss entrain de tester la proposition de kachiko vu que je travaille sur une JVM 1.3 qui ne reconnait pas

    Pattern p = Pattern.compile(".*?(\\d+\\.\\d+?|\\d+).*?");
    Matcher m = p.matcher
    je vous tiens au courant

    Merci

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 73
    Par défaut
    JVM 1.3 ! Pas de chance

    Bon code

Discussions similaires

  1. [Tableaux] Extraire des mots d'une chaine de caractères
    Par pratiquement dans le forum Langage
    Réponses: 5
    Dernier message: 24/01/2008, 09h20
  2. [RegEx] Extraire un mot d'une chaine de caractère
    Par Gunner4902 dans le forum Langage
    Réponses: 3
    Dernier message: 21/12/2007, 09h30
  3. extraire des entiers d'une chaine de caractère
    Par 18Marie dans le forum Langage
    Réponses: 9
    Dernier message: 10/08/2006, 11h17
  4. [MySQL] extraire des nombre d'une chaine de caractères et addition
    Par Yotho dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 04/03/2006, 16h54
  5. Réponses: 9
    Dernier message: 17/01/2003, 11h45

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