Vra

Ek wil graag die domein-/rekenaarinligting van 'n aanmeld-ID in C# verwyder.So, ek wil graag "Domain\me" of "Domain\me" net "ek" maak.Ek kon altyd kyk vir die bestaan ​​van een, en dit as die indeks gebruik om die substring te begin ... maar ek soek iets meer elegant en kompak.

Erger geval scenario:

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);
Was dit nuttig?

Oplossing

as al wat jy het 'n hamer is, lyk alles soos 'n spyker.....

gebruik 'n skeermeslem ----

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

    }

}

Ander wenke

Jy kan die Pad-klas misbruik, so:

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

Hoe gaan dit met:

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

Dit sal vir albei werk, maar met genoemde groepe.

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

Ek doen dit altyd so:

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

Nou kan jy kyk na domainuser.Length om te sien hoeveel dele daar is en domainuser[0] vir die domein en domainuser[1] vir die gebruikernaam.

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

Dit werk vir beide geldige domeinaanmeldings:

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

Piggy backing on Derek Smalls Answer...

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

vir my gewerk.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top