Удалить информацию о домене из идентификатора входа в С#
Я хотел бы удалить информацию о домене/компьютере из идентификатора входа в С#. Итак, я хотел бы сделать "Domain\me" или "Domain\me" просто "я". Я всегда мог проверить существование и использовать это как индекс для запуска подстроки... но я ищу что-то более элегантное и компактное.
Худший сценарий:
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);
Ответы
Ответ 1
когда у вас есть молот, все выглядит как гвоздь.....
используйте лезвие бритвы ----
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);
}
}
Ответ 2
Вы можете злоупотреблять классом Path следующим образом:
string shortName = System.IO.Path.GetFileNameWithoutExtension(ResourceLoginName);
Ответ 3
Как насчет:
string shortName = ResourceLoginName.Split('\\')[1]
Ответ 4
Я всегда так делаю:
string[] domainuser;
string Auth_User = Request.ServerVariables["AUTH_USER"].ToString().ToLower();
domainuser = Auth_User.Split('\\');
Теперь вы можете посмотреть на домен domainuser.Length, чтобы узнать, сколько частей и domainuser [0] для домена и domainuser [1] для имени пользователя.
Ответ 5
string theString = "domain\\me";
theString = theString.Split(new char[] { '\\' })[theString.Split(new char[] { '\\' }).Length - 1];
Ответ 6
Это будет работать как с именами, так и с именами.
^(?<domain>.*)\\(?<username>.*)|(?<username>[^\@]*)@(?<domain>.*)?$
Ответ 7
Это работает как для действительных доменных логинов:
var regex = @"^(.*\\)?([^\@]*)(@.*)?$";
var user = Regex.Replace("domain\\user", regex, "$2", RegexOptions.None);
user = Regex.Replace("[email protected]", regex, "$2", RegexOptions.None);
Ответ 8
Копилка на Derek Smalls Отвечает...
Regex.Replace(User.Identity.Name,@"^(?<domain>.*)\\(?<username>.*)|(?<username>[^\@]*)@(?<domain>.*)?$", "${username}", RegexOptions.None)
работал у меня.