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

C++Builder Discussion :

Extraire un segment d'une string


Sujet :

C++Builder

  1. #1
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par défaut Extraire un segment d'une string
    Bonjour,

    J'ai une question toute bête, mais je me demande s'il existe une fonction ad hoc pour extraire un champ depuis un AnsiString.

    Je m'explique. J'ai une chaîne de caractère:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AnsiString fields="champ0;champ1;champ2;champ3;champ4";
    Et j'aimerais pouvoir extraire rapidement un champ par son index (NB: je ne connais ni la longueur de chaque champs ni leur nombre). Il me faudrait une fonction qui me retourne le ième champ. Par exemple:

    Extract(fields,1,';') retourne "champ1"
    Extract(fields,3,';') retourne "champ3"

    Ca existe ou il faut que je l'écrive moi-même? C'est trivial, je le sais, mais je l'utilise souvent alors je n'ai pas envie de la remettre dans toutes mes classes...

    Merci

  2. #2
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par défaut
    Super, merci beaucoup! Je ne l'avais pas trouvé car je cherchais des "champs" et non pas des "mots"

    Sinon, j'avais aussi fait une fonction...

    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
    18
    19
    20
    21
    22
    //! Extract a subfield
    AnsiString __fastcall TFrameReqFilter::Extract(const AnsiString& source,int index,
                                                   char sep,AnsiString def) const {
     
      // Look for index_th separator
      char* start=source.c_str();
      while ((index>0)&&(*start!='\0')) {
        if (*start==sep) --index;
        ++start;
      }
     
      // End of string ?
      if (*start=='\0') return def;
     
      // Start of field was found, look for its end
      char* end=start+1;
      while ((*end!='\0')&&(*end!=sep)) ++end;
     
      // End of field is found, extract the field
      return source.SubString(start-source.c_str()+1,end-start);
     
    }

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

Discussions similaires

  1. extraire des nombres d'une string
    Par neonico dans le forum C#
    Réponses: 9
    Dernier message: 06/03/2014, 09h58
  2. Extraire les données d'une string
    Par bastian06n dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/08/2010, 15h16
  3. Réponses: 4
    Dernier message: 11/05/2006, 14h41
  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 informations d'une String
    Par Zapan dans le forum Langage
    Réponses: 8
    Dernier message: 07/01/2006, 20h28

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