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# Discussion :

extraire des nombres d'une string


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2002
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 55
    Par défaut extraire des nombres d'une string
    Hello,
    voici ma string "demo3483030";
    je cherche à extraire de cette chaine de caractères tous les numéros.
    Comment fait on?
    D'avance, Merci.

  2. #2
    Membre chevronné Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Par défaut
    Salut,

    tu peux faire une boucle en testant les caractères :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    foreach(var c in str)
    {
        if(char.IsNumber(c))
        {
            //...
        }
    }

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 164
    Par défaut
    Sinon, tu peux utiliser une expression régulière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    String input = "kjlkjdf48d48fcxds983s2c1";
     
                MatchCollection matches = Regex.Matches(input, "[0-9]");
                foreach (Match match in matches)
                {
                    // par exemple :
                    this.Label1.Text += match.Value;
                }
    après, à toi de voir ce que tu veux en faire

  4. #4
    Invité
    Invité(e)
    Par défaut
    Si t'es sûr que les chiffres sont consécutifs et sont présents une seule fois dans la chaîne, rajoute + après [0-9].

  5. #5
    Membre actif Avatar de ToshiroSama
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 77
    Par défaut
    Salut,
    Si la chaine demo00000 est créé dans le code tu peux eventuellement mettre un caractere entre demo et le chiffre de facon à utiliser un split après.

    dans le cas contraire, une boucle s'impose tu test si c'est un nombre ou pas et à chaque fois tu concaténe dans une chaine temporaire que tu peux convertir ensuite. Convert.ToInt32

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par ToshiroSama Voir le message
    Salut,
    Si la chaine demo00000 est créé dans le code
    Si sa chaine était créée dans le code, il stockerait a priori les infos au fur et à mesure de l'insertion et n'aurait aucun besoin de la parser a posteriori.

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Bonjour

    Citation Envoyé par neonico Voir le message
    voici ma string "demo3483030";
    je cherche à extraire de cette chaine de caractères tous les numéros.
    Comment fait on?
    D'avance, Merci.
    Comme déjà dit, voir du coté des expressions régulières ("regex").

  8. #8
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Par défaut Algo avec char[]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    char[] tab = chaineStr.ToCharArray();
    String prefixLettre = "", suffixNombre = "";
    for(int i = tab.Length-1;i>=0;i--)
    {
       if (char.IsNumber(tab[i]))
          suffixNombre = tab[i] + suffixNombre;
       else
          prefixLettre = tab[i] + prefixLettre;
    }
    int numero = int.Parse(suffixNombre);

  9. #9
    Membre chevronné Avatar de Julien698
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2013
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2013
    Messages : 237
    Par défaut
    Salut,

    Tu peux faire quelque chose de simple comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string a="demo3483030";
    string b = a.Split('3')[0];
    string c = a.Split('3')[1];
    tu auras :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string b = "demo";
    string c = "483030";
    c'est une méthode facile mais le problème c'est que le caractère où tu fais le Split disparais, de même si tu as plusieurs chaînes contenant "demo" et que le premier chiffre est autre que 3 tu devras faire du cas par cas avec cette méthode, au pire tu peux utiliser un switch le mieux serait d'utiliser des crochets [0-9] pour dire que dès le premier chiffre tu coupes mais je ne sais pas si ça marche avec Split.

  10. #10
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Euh, la discussion date de 2010...
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

Discussions similaires

  1. Extraire des nombres dans une chaine de caractère
    Par fxfxfx dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 27/05/2013, 10h41
  2. Réponses: 4
    Dernier message: 11/05/2006, 14h41
  3. [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
  4. [LG]Extraire des nombres d'une chaine
    Par audreym31 dans le forum Langage
    Réponses: 4
    Dernier message: 18/01/2004, 21h24
  5. Réponses: 2
    Dernier message: 30/05/2002, 10h19

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