Verwyder domeininligting van aanmeld-ID in C#
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);
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.