2016-06-07 16 views
1

Ich habe Web-Methode, um Benutzer von this.User.Identity.Name.string username = "ACCOUNTS \ Ninja.Developer" Ich möchte Benutzernamen Teil nach "ACCOUNTS \" in Kleinbuchstaben zu Benutzernamen = "ACCOUNTS \ ninja .developer“Verdeckter Namensteil nach "ACCOUNTS \" in Kleinbuchstaben?

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


    return user; 
} 

Anmerkung: double \ nicht einzelne \

Antwort

3

Sie können Regex.Replace verwenden, es zu erreichen:

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

Die RegexMuster (?<=ACCOUNTS\\).+ wird nach ACCOUNTS\ für alles akzeptiert, und das Spiel wird dann von seinem unteren Fall gleichwertig ersetzt.

5

Verwenden Sie diesen Code:

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

natürlich können Sie, bevor sie im Namen der \ Charakter überprüfen sollten, usw.

+3

ich hoffe, es wirft keinen Fehler, da einzelne '\' als Escape-Sequenz identifiziert wird. Wenn dies der Fall ist, sollte "\\" funktionieren. – Maverick

+0

es "\\" nicht einzeln '\' – NinjaDeveloper

+0

Editiert für die Behandlung von Doppel '\\'. Es gibt nur noch ein Element im Array –

1

Wie in anderen Antworten erwähnt, können Sie Regex oder Split verwenden, aber hier ist ein Teilstring-Ansatz speziell für Ihren Fall.

var user = new User 
{ 
    Username = this.User.Identity.Name.Substring(0,9) + this.User.Identity.Name.Substring(9, name.Length - 9).ToLower(), 
    IsAuthenticated = this.User.Identity.IsAuthenticated 
};