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 une chaine


Sujet :

C#

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 488
    Points : 134
    Points
    134
    Par défaut Extraire une chaine
    Bonjour,

    Voilà j'ai une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public string strDomainUserName ="nomDeDomaine\groupe.utilisateur"
    J'aimerai récupérer la chaine utilisateur et la chaine groupe, comment faire ?

  2. #2
    Nouveau membre du Club
    Inscrit en
    Août 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 25
    Points : 37
    Points
    37
    Par défaut
    Hello,

    avec la fonction Split, tu ne devrais pas avoir de problèmes

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut
    substring, indexof, regex ...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 488
    Points : 134
    Points
    134
    Par défaut
    Le nom du groupe et le nom de l'utilisateur est variable.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 19
    Points : 24
    Points
    24
    Par défaut
    Se n'est pas grave s'il y a toujours le point le Split regle ton probleme

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 19
    Points : 24
    Points
    24
    Par défaut
    Comme ça

    "nomDeDomaine\groupe.utilisateur".Split('.')[1]

  7. #7
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 170
    Points : 7 422
    Points
    7 422
    Billets dans le blog
    1
    Par défaut
    Euh... Soit tu met un @ devant ta chaîne de caractères, soit du double ton \, parce que là... Bah tu fait un \g au milieu de ta chaîne (ça veut rien dire mais c'est pas grave) et donc :
    - Le caractère \ sera introuvable dans la chaîne
    - Le mot "groupe" sera introuvable dans la chaîne

    En effet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "nomDeDomaine\groupe.utilisateur"
    Est converti :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "nomDeDomaine#UnTrucPasCatholique#roupe.utilisateur"
    (avec #UnTrucPasCatholique# qui sera soit null, soit invisible, soit un caractère bizarre, soit... cf la documentation de C#)

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 76
    Points : 81
    Points
    81
    Par défaut
    Tu dois utliser regex
    en commancant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using System.Text.RegularExpressions;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    string UserId = WindowsIdentity.GetCurrent().Name; // qui recupere le login de l'utilisateur
    string temp1 = @"^(?<DomainID>([\d\w_-])+)\\(?<get_user_login>([\d\w_-])+)$";
     
                Regex myRegexp1 = new Regex(temp1, RegexOptions.IgnoreCase);
                // Find matches.
                Match matches1 = myRegexp1.Match(UserId);
                string ALIASOPP1 = matches1.Groups["get_user_login"].Value; //the result

  9. #9
    Membre régulier Avatar de NetLandGim
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Mars 2011
    Messages : 97
    Points : 113
    Points
    113
    Par défaut
    Les regex un vrai casse tête pour moi!
    Un Split est encore plus simple

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 76
    Points : 81
    Points
    81
    Par défaut
    je te comprend mais reprend ce code et ton problem est resolu. Je lai fait et sa marche

  11. #11
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 76
    Points : 81
    Points
    81
    Par défaut
    Pour le faire avec split
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    string strDomainUserName ="nomDeDomaine\groupe.utilisateur"
    			char[] splitters = new char[] { '\'' };
                string[] laCase = strDomainUserName.Split(splitters);
    			string groupe=laCase[1];

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 488
    Points : 134
    Points
    134
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     TSFormAuthTicketInfo objTSFormAuthTicketInfo = new TSFormAuthTicketInfo(HttpContext.Current);
                strUserSID = objTSFormAuthTicketInfo.UserSid;
                fUserAdmin = objTSFormAuthTicketInfo.IsTswaAdministrator;
                bPrivateMode = objTSFormAuthTicketInfo.PrivateMode;
                strDomainUserName = objTSFormAuthTicketInfo.DomainUserName;
    	    laCase = strDomainUserName.Split(splitters);
                groupe = laCase[1];
    Voila le code que j'ai.... et le message d'erreur qui m'est retourné:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Ligne 131 :      strDomainUserName = objTSFormAuthTicketInfo.DomainUserName;
    Ligne 132 :	    laCase = strDomainUserName.Split(splitters);
    Ligne 133 :     groupe = laCase[1];
    Ligne 134 :	 
    Ligne 135 :        }
    [IndexOutOfRangeException: L'index se trouve en dehors des limites du tableau.]
    Alors que strDomainUserName = mongroupe\toto

    Est-ce que quelqu'un pourrai m'aider svp?

  13. #13
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Points : 560
    Points
    560
    Par défaut
    A ce que je crois comprendre, je ne pense pas que ta variable splitters contienne \ comme caractère séparateur.
    L'exception
    IndexOutOfRangeException: L'index se trouve en dehors des limites du tableau.
    est lancé car tu essayes d'accèder à l'index 1 d'un tableau qui ne comporte très certainement qu'un élément (Si ta chaîne de caractère ne contient pas ton caractère séparateur, la fonction retourne un tableau d'un élément contenant toute ta chaîne de caractère).


    Pour rappel, voici comment initialiser ta variable pour utiliser \ comme caractère séparateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char[] splitters = new char[] { '\\' };
    De cette manière, tu auras à l'index 0 Groupe
    et à l'index 1 NomUtilisateur

  14. #14
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 19
    Points : 24
    Points
    24
    Par défaut
    Le code correct est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
    string strDomainUserName =@"nomDeDomaine\groupe.utilisateur"
    char[] splitters = new char[] { '\\' };
    string[] laCase = strDomainUserName.Split(splitters);
    string groupe=laCase[1];
    Je viens de vérifier sa fonctionne parfaitement

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

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par sheira Voir le message
    Alors que strDomainUserName = mongroupe\toto
    Ce qui n'est, accessoirement, pas du tout le format que tu fournissais dans ton premier poste .....

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 488
    Points : 134
    Points
    134
    Par défaut
    Merci!
    strDomainUserName =nomDeDomaine\groupe
    Avec le code de bacarndiaye, j'arrive à récupérer le mot "groupe".

    Imaginons maintenant que j'ai :

    strDomainUserName =nomDeDomaine\groupe.utilisateur
    et que je veuille toujours récupérer le mot groupe.

    Comment faire?

  17. #17
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    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
    private void button1_Click(object sender, EventArgs e)
            {
                int m, n;
                string mot = "nomDeDomaine\\groupe.utilisateur";
                string group = "";
                string util = "";
     
                m = mot.IndexOf('\\');
                n = mot.IndexOf('.', m);
                group = mot.Substring(m + 1, n - m-1);
                util = mot.Substring(n+1);
                listBox1.Items.Add(group);
                listBox1.Items.Add(util);
     
            }

  18. #18
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut
    Comme je disais, indexof, lastindexof, substring, regex...
    Mais je ne trouve pas ça très malin de donner le code directement pour ce genre de chose ou on apprend et comprend bien mieux en faisant soit même (avec bien sur l'aide des autres pour nous guider et aider à corriger nos erreurs).

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 488
    Points : 134
    Points
    134
    Par défaut
    Merci à tous j'ai utilisé le Split parce que c'est celui que j'ai le mieux compris.

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

Discussions similaires

  1. Extraire une chaine contenue entre 2 delimiteurs
    Par gregb34 dans le forum Langage
    Réponses: 2
    Dernier message: 17/02/2006, 08h21
  2. Extraire une chaine
    Par had182 dans le forum Débuter
    Réponses: 2
    Dernier message: 07/01/2006, 18h24
  3. Extraire une chaine de caratere
    Par matthieu5978 dans le forum Langage
    Réponses: 2
    Dernier message: 15/12/2005, 19h52
  4. [RegEx] Extraire une chaine
    Par pierre50 dans le forum Langage
    Réponses: 8
    Dernier message: 15/09/2005, 12h43
  5. Réponses: 2
    Dernier message: 10/07/2002, 11h51

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