Question

Je voudrais supprimer les informations de domaine / ordinateur d'un identifiant de connexion en C #. Je souhaite donc que soit "& Domain; Domain \ me " ou " Domaine \ me " juste "moi". Je pourrais toujours vérifier l'existence de l'un ou de l'autre et l'utiliser comme index pour démarrer la sous-chaîne ... mais je cherche quelque chose de plus élégant et compact.

Pire scénario:

int startIndex = 0;
int indexOfSlashesSingle = ResourceLoginName.IndexOf("\");
int indexOfSlashesDouble = ResourceLoginName.IndexOf("\\");
if (indexOfSlashesSingle != -1)
    startIndex = indexOfSlashesSingle;
else
    startIndex = indexOfSlashesDouble;
string shortName = ResourceLoginName.Substring(startIndex, ResourceLoginName.Length-1);
Était-ce utile?

La solution

quand tout ce que vous avez est un marteau, tout ressemble à un clou .....

utiliser une lame de rasoir ----

using System;
using System.Text.RegularExpressions;
public class MyClass
{
    public static void Main()
    {
        string domainUser = Regex.Replace("domain\\user",".*\\\\(.*)", "$1",RegexOptions.None);
        Console.WriteLine(domainUser);  

    }

}

Autres conseils

Vous pouvez abuser de la classe Path, par conséquent:

string shortName = System.IO.Path.GetFileNameWithoutExtension(ResourceLoginName);

Comment ça va:

string shortName = ResourceLoginName.Split('\\')[1]

Cela fonctionnera pour les deux mais avec des groupes nommés.

^(?<domain>.*)\\(?<username>.*)|(?<username>[^\@]*)@(?<domain>.*)?$

Je le fais toujours de cette façon:

    string[] domainuser;
    string Auth_User = Request.ServerVariables["AUTH_USER"].ToString().ToLower(); 
    domainuser = Auth_User.Split('\\');

Maintenant, vous pouvez regarder domainuser.Length pour voir combien de pièces il y a et domainuser [0] pour le domaine et domainuser [1] pour le nom d'utilisateur.

        string theString = "domain\\me";
        theString = theString.Split(new char[] { '\\' })[theString.Split(new char[] { '\\' }).Length - 1];

Ceci fonctionne pour les deux connexions de domaine valides:

var regex = @"^(.*\\)?([^\@]*)(@.*)?<*>quot;;
var user = Regex.Replace("domain\\user", regex, "$2", RegexOptions.None);
user = Regex.Replace("user@domain.com", regex, "$2", RegexOptions.None);

Piggy sur Derek Smalls Répondre ...

Regex.Replace(User.Identity.Name,@"^(?<domain>.*)\\(?<username>.*)|(?<username>[^\@]*)@(?<domain>.*)?<*>quot;, "${username}", RegexOptions.None)

a travaillé pour moi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top