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 éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 488
    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
    Membre confirmé
    Inscrit en
    Août 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 25
    Par défaut
    Hello,

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

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

    Informations professionnelles :
    Activité : Développeur .NET

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

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

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

  5. #5
    Membre averti
    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
    Par défaut
    Se n'est pas grave s'il y a toujours le point le Split regle ton probleme

  6. #6
    Membre averti
    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
    Par défaut
    Comme ça

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

  7. #7
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 197
    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 actif
    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
    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 actif 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
    Par défaut
    Les regex un vrai casse tête pour moi!
    Un Split est encore plus simple

  10. #10
    Membre actif
    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
    Par défaut
    je te comprend mais reprend ce code et ton problem est resolu. Je lai fait et sa marche

  11. #11
    Membre actif
    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
    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 éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 488
    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 chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    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 averti
    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
    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 : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    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 éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 488
    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 Expert 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
    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 Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    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 éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 488
    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