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

Windows Forms Discussion :

Récupérer un élément d'une chaine de caractère


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 81
    Points : 45
    Points
    45
    Par défaut Récupérer un élément d'une chaine de caractère
    Bonjour,

    Voilà mon soucis, j'utilise actuellement Selenium et MbUnit pour faire des tests unitaires sur une appli Web.
    Je suis dans le cas où j'aimerai récupérer une valeur dans une URL :

    http://www.site.truc/machin/page_cli...?IdClient=2323

    J'aimerai récupérer l'IdClient, pour cela, vous me direz d'utiliser Request.QueryString["IdClient"], mais non ! Le fait d'utiliser selenium, ne me permet pas d'utiliser des composant Web, car mon projet de test n'est pas un projet Web proprement dit.

    Donc je me retrouve à pouvoir récupérer ladite l'url mais sans pouvoir juste récupérer la valeur de "IdClient".

    Si quelqu'un a une idée, je suis preneur.

    Merci d'avance,

    DJuL-

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Utilise la classe Uri pour extraire la party "query" de l'URL
    Ensuite, il reste juste à splitter la chaine par rapport au caractère '&', puis a séparer chaque égalité.
    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
     
    Uri uri = new Uri("http://www.site.truc/machin/page_client.aspx?IdClient=2323");
    string query = uri.Query;
    string[] queryParts = query.Split(new char[]{'&'});
    Dictionary<string, string> queryVariables = new Dictionary<string, string>();
    foreach (string s in queryParts)
    {
        string[] parts = s.Split(new char[]{'='}, 2);
        string name = parts[0];
        string value = (parts.Length > 1) ? parts[1] : "";
        queryVariables.Add(name, value);
    }
     
    ...
     
    string idClient = queryVariables["IdClient"];

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string[] queryParts = query.Split(new char[]{'&'});
    C'est pas plutôt:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string[] queryParts = query.Split(new char[]{'?'});
    parce que sinon, dans ton cas, ca marcherait pas....

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Non non... query = uri.Query, et la propriété Query renvoie la chaine qui suit le caractère '?'. Ensuite les différents paramètres de la query sont séparés par '&'. Mais bon, dans l'exemple il n'y a qu'un paramètre, donc ça ne se voit pas...

    D'ailleurs c'est dommage que la classe Uri ne propose pas une propriété pour accéder directement aux variables de la query string, un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    uri.QueryVariables["IdClient"]
    Enfin bon, il suffirait de faire une classe héritée de Uri pour ajouter ça...

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Mais bon, dans l'exemple il n'y a qu'un paramètre, donc ça ne se voit pas...
    Ca c'est sur

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 81
    Points : 45
    Points
    45
    Par défaut
    Merci pour vos réponses, je vais tester ça de suite.

Discussions similaires

  1. Remplacer un élément dans une chaine de caractères
    Par mauyebo dans le forum Langage
    Réponses: 1
    Dernier message: 05/09/2008, 21h03
  2. Réponses: 3
    Dernier message: 01/08/2008, 09h58
  3. retrouver un élément dans une chaine de caractères
    Par mauyebo dans le forum Langage
    Réponses: 10
    Dernier message: 26/06/2008, 01h51
  4. Réponses: 10
    Dernier message: 20/02/2008, 11h57
  5. [RegEx] comment récupérer un lien dans une chaine de caractère
    Par matonisuka dans le forum Langage
    Réponses: 4
    Dernier message: 25/05/2007, 15h36

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