문제
C#의 로그인 ID에서 도메인/컴퓨터 정보를 제거하고 싶습니다. 그래서 나는 "domain me"또는 "domain me"Just "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);
해결책
당신이 가진 것이 망치 일 때, 모든 것이 못처럼 보입니다 .....
면도날을 사용하십시오 ----
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);
}
}
다른 팁
따라서 경로 클래스를 남용 할 수 있습니다.
string shortName = System.IO.Path.GetFileNameWithoutExtension(ResourceLoginName);
어때 :
string shortName = ResourceLoginName.Split('\\')[1]
이것은 모두 이름이 지정된 그룹과 함께 작동합니다.
^(?<domain>.*)\\(?<username>.*)|(?<username>[^\@]*)@(?<domain>.*)?$
나는 항상 이런 식으로한다 :
string[] domainuser;
string Auth_User = Request.ServerVariables["AUTH_USER"].ToString().ToLower();
domainuser = Auth_User.Split('\\');
이제 DomainUser.length를 살펴보면 도메인 및 사용자 이름의 도메인 및 도메인 사용자 [1]에 대한 DomainUser [0]가 얼마나 있는지 확인할 수 있습니다.
string theString = "domain\\me";
theString = theString.Split(new char[] { '\\' })[theString.Split(new char[] { '\\' }).Length - 1];
이것은 유효한 도메인 로그인 모두에 적용됩니다.
var regex = @"^(.*\\)?([^\@]*)(@.*)?$";
var user = Regex.Replace("domain\\user", regex, "$2", RegexOptions.None);
user = Regex.Replace("user@domain.com", regex, "$2", RegexOptions.None);
Derek Smalls에 대한 돼지 후원 ...
Regex.Replace(User.Identity.Name,@"^(?<domain>.*)\\(?<username>.*)|(?<username>[^\@]*)@(?<domain>.*)?$", "${username}", RegexOptions.None)
나를 위해 일했습니다.
제휴하지 않습니다 StackOverflow