2016-06-07 1 views
1

나는 this.User.Identity.Name.string 사용자 이름 = "ACCOUNTS \ Ninja.Developer"에서 사용자를 얻으려면 웹 메서드가 있습니다. "ACCOUNTS \"다음에 사용자 이름 부분을 사용자 이름 = "ACCOUNTS \ ninja가되도록 소문자로 변환하고 싶습니다. .developer ""ACCOUNTS \"다음의 비밀스런 이름 부분을 소문자로 변환 하시겠습니까?

public User GetUser() 
{ 
    var user = new User 
    { 
     Username = this.User.Identity.Name,<-- convert it here 
     IsAuthenticated = this.User.Identity.IsAuthenticated 
    }; 


    return user; 
} 

참고 : 더블 \하지 단일 \

답변

3

당신은 그것을 달성하기 위해 Regex.Replace를 사용할 수 있습니다

Username = Regex.Replace(this.User.Identity.Name, @"(?<=ACCOUNTS\\).+", n => n.Value.ToLower()), 

정규식 패턴 (?<=ACCOUNTS\\).+ACCOUNTS\ 후 아무것도 일치하며, 경기는 다음의 소문자 동등한로 대체됩니다.

5

사용이 코드 : 당신이 이름 전에 확인해야 물론

var Identity = this.User.Identity.Name; 
var Username = Identity.Split('\\')[0] + @"\\" + Identity.Split('\\')[2].ToLower(); 

\ 문자가 등

+3

단일 '\'가 이스케이프 시퀀스로 식별되기 때문에 오류가 발생하지 않기를 바랍니다. 그렇다면 "\\"가 작동해야합니다. – Maverick

+0

"\\"단일 '\'이 아님 – NinjaDeveloper

+0

이중 '\\'을 처리하기 위해 편집 됨. 배열에 요소가 하나 더 있습니다. –

1

다른 답변에서 언급했듯이 Regex 또는 Split을 사용할 수 있지만 여기에 해당하는 부분 문자열 접근 방법이 있습니다.

관련 문제