Frage

Ich möchte die Domänen-/Computerinformationen aus einer Anmelde -ID in C#entfernen. Also möchte ich entweder "Domain me" oder "Domain me" nur "ich" machen. Ich konnte immer nach der Existenz von beiden überprüfen und diesen als Index verwenden, um das Substring zu starten ... aber ich suche etwas Eleganteres und kompakteres.

Schlimmeres Fall Szenario:

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);
War es hilfreich?

Lösung

Wenn Sie nur einen Hammer haben, sieht alles aus wie ein Nagel .....

Verwenden Sie eine Rasierklinge ----

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);  

    }

}

Andere Tipps

Sie könnten die Pfadklasse also missbrauchen:

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

Wie geht es darum:

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

Dies wird für beide, aber bei genannten Gruppen funktionieren.

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

Ich mache es immer so:

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

Jetzt können Sie sich Domainuser.Length ansehen, um zu sehen, wie viele Teile es gibt, und Domainuser [0] für den Domain und den Domainuser [1] für den Benutzernamen.

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

Dies funktioniert für beide gültigen Domänenanmeldungen:

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

Schweineherztliche auf Derek Smalls Antwort ...

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

arbeitete für mich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top