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

Dotnet Discussion :

Récuperer les entiers dans un string [Débutant]


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Par défaut Récuperer les entiers dans un string
    Bonjour,

    je recherche une solution pour récupérer les entiers présent dans mon string en VB comme ci-dessous:

    dim chaine as string = ""
    chaine= "vlan 30 40 50 70 526 1852"

    Donc j obitendrais 30,40,50....
    Quelqu'un aurait-t-il une idée ?

    ps: je pense passer par la méthode TocharArray pour transformer la chaine en tableau de caractère. Mais je n'ai pas réussi a aboutir.

    Cordialement,
    Kévin

  2. #2
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    Bonjour,

    C'est assez simple, l'algo serait une itération sur tous les caractères. en c# sans IDE, ça donnerait :

    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
     
     
    string chaine = "vlan 30 40 50 70 526 1852";
    string nombre = string.empty;
    list<int> liste = new List<int>;
     
    for(int i = 0;i<chaine.length;i++)
    {
       if (char.isnumber(chaine, i))
      {
        nombre += chaine[i];
      }
      else
      {
        if (!string.isnullorempty(nombre))
        {
          liste.add(int.parse(nombre));
          nombre = string.empty;
        }
      }
     
    }
    Bon dév.

  3. #3
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    bon, avec un ide, ça donne ça :

    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
    23
    24
                string chaine = "vlan 30 40 50 70 526 1852";
                List<int> liste = new List<int>();
     
                string nombre = string.Empty;
     
                for (int i = 0; i < chaine.Length; i++)
                {
                    if (char.IsNumber(chaine, i))
                    {
                        nombre += chaine[i];
                    }
                    else
                    {
                        if (!string.IsNullOrEmpty(nombre))
                        {
                            liste.Add(int.Parse(nombre));
                            nombre = string.Empty;
                        }
                    }
                }
                if (!string.IsNullOrEmpty(nombre))
                {
                    liste.Add(int.Parse(nombre));
                }

  4. #4
    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
    On peut aussi utiliser une regular expression :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var chaine = "vlan 30 40 50 70 526 1852";
    var results = Regex.Matches(chaine, @"\d+");
     
    foreach (var result in results)
    {
        Console.WriteLine(result);
    }

    Citation Envoyé par Résultat :
    30
    40
    50
    70
    526
    1852
    Sachant que l'expression \d+ permet de récupérer un entier, et que la variable results est de type MatchCollection.
    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.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Par défaut
    Bonjour,


    Je vous remercie tout les deux pour l’intérêt que vous avez porté a ma demande. J'ai pris connaissance de vos deux propositions et de mon coté j'ai essayé de developper un algo.
    Celui-ci est le suivant ( Je suis en VB.net )

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    Dim listeVlan As ArrayList
            listeVlan = New ArrayList
     
     
            Dim caractere As Char() = chaine.ToCharArray
            Dim i As Integer = 12
            Dim vlan As String = ""
     
            While i < caractere.Length
                If caractere(i) = " " Then
                    Console.WriteLine("espace rencontré")
                Else
                    If caractere(i - 1) = " " Then
                        vlan = caractere(i)
     
                    Else
                        If caractere(i + 1) = " " Or i + 1 >= caractere.Length Then
                            vlan = vlan + caractere(i)
                            MsgBox(vlan)
                            listeVlan.Add(vlan)
                        Else
                            vlan = vlan + caractere(i)
     
                        End If
     
                    End If
                End If
     
                i = i + 1
            End While
     
            Return listeVlan
    Celui-ci marche mais j'ai une erreur d'index pour la fin de chaine.
    Les fonctions que vous utilisés en C# sont elle présente en VB ?

    Cordialement,
    Kévin

  6. #6
    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
    Citation Envoyé par kevin01330 Voir le message
    Les fonctions que vous utilisés en C# sont elle présente en VB ?
    Oui, ça donne quelque chose comme ceci :

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim chaine = "vlan 30 40 50 70 526 1852"
    Dim results = Regex.Matches(chaine, "\d+")
     
    For Each result As var In results
        Console.WriteLine(result)
    Next
    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.

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

Discussions similaires

  1. Récuper les identifiants dans un string
    Par Tazze-99 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 27/12/2011, 17h13
  2. Réponses: 6
    Dernier message: 31/07/2006, 16h01
  3. Réponses: 7
    Dernier message: 14/09/2005, 10h50
  4. mettre un entier dans une string
    Par kinder29 dans le forum SL & STL
    Réponses: 14
    Dernier message: 14/02/2005, 11h54
  5. Sélectionner tous les entiers dans une fourchette
    Par ludo.guy dans le forum Langage SQL
    Réponses: 5
    Dernier message: 16/07/2004, 09h15

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