Bonjour,
Voilà j'ai une variable
J'aimerai récupérer la chaine utilisateur et la chaine groupe, comment faire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part public string strDomainUserName ="nomDeDomaine\groupe.utilisateur"
Bonjour,
Voilà j'ai une variable
J'aimerai récupérer la chaine utilisateur et la chaine groupe, comment faire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part public string strDomainUserName ="nomDeDomaine\groupe.utilisateur"
Hello,
avec la fonction Split, tu ne devrais pas avoir de problèmes
substring, indexof, regex ...
Le nom du groupe et le nom de l'utilisateur est variable.
Se n'est pas grave s'il y a toujours le point le Split regle ton probleme
Comme ça
"nomDeDomaine\groupe.utilisateur".Split('.')[1]
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 :
Est converti :
Code : Sélectionner tout - Visualiser dans une fenêtre à part "nomDeDomaine\groupe.utilisateur"
(avec #UnTrucPasCatholique# qui sera soit null, soit invisible, soit un caractère bizarre, soit... cf la documentation de C#)
Code : Sélectionner tout - Visualiser dans une fenêtre à part "nomDeDomaine#UnTrucPasCatholique#roupe.utilisateur"
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
Les regex un vrai casse tête pour moi!
Un Split est encore plus simple
je te comprend mais reprend ce code et ton problem est resolu. Je lai fait et sa marche
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];
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 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];
Alors que strDomainUserName = mongroupe\toto
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.]
Est-ce que quelqu'un pourrai m'aider svp?
A ce que je crois comprendre, je ne pense pas que ta variable splitters contienne \ comme caractère séparateur.
L'exception
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).IndexOutOfRangeException: L'index se trouve en dehors des limites du tableau.
Pour rappel, voici comment initialiser ta variable pour utiliser \ comme caractère séparateur :
De cette manière, tu auras à l'index 0 Groupe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 char[] splitters = new char[] { '\\' };
et à l'index 1 NomUtilisateur
Le code correct est
Je viens de vérifier sa fonctionne parfaitement
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];
Merci!
Avec le code de bacarndiaye, j'arrive à récupérer le mot "groupe".strDomainUserName =nomDeDomaine\groupe
Imaginons maintenant que j'ai :
et que je veuille toujours récupérer le mot groupe.strDomainUserName =nomDeDomaine\groupe.utilisateur
Comment faire?
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); }
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).
Merci à tous j'ai utilisé le Split parce que c'est celui que j'ai le mieux compris.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager