nie tak proste, jak przy użyciu podział, jednakże:
string input = "FirstName=ABC;LastName=XZY;Username=User1;Password=1234";
string username = Regex.Match(input, "Username=(?<username>.*?)(;|$)").Groups["username"].Value;
W tym przypadku grupy mogą być w dowolnej kolejności.
A jeśli chcesz dostać twórczy:
var answers = from tuple in input.Split(';')
where tuple.StartsWith("Username=")
select tuple.Split('=')[1];
username = answers.Count() > 0 ? answers.First() : string.Empty;
Można by powiedzieć, że ostatni kawałek ma lepsze semantykę.
EDYCJA: Zaktualizuj ostatni element, aby poradzić sobie z ciągami wejściowymi, które nie mają wymaganej krotki.
Kiedy problem ma bardzo ostatecznych odpowiedzi, takie jak ten to zawsze zabawne mnie oglądać jak wiele różnych rozwiązań SO wspólnotowe przewiduje. –
Jedna rzecz do zapamiętania: ciąg wejściowy ma pole o nazwie "Użytkownik ** n ** nazwa". Następnie pytasz o pole "Użytkownik ** N ** ame". Uważaj na obudowę podczas analizowania łańcuchów. Są oczywiście sposoby na rozwiązanie tego problemu. –