문제

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)

나를 위해 일했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top