C#, .NET 3.5Analyse d'une chaîne en C#; Y a-t-il une manière plus propre?
Cela me sent juste moche, mais je ne peux pas penser à une autre façon.
Étant donné une chaîne au format "Joe Smith (jsmith)" (sans guillemets), je voudrais analyser uniquement la chaîne "jsmith" entre parenthèses. Je suis venu avec ceci:
private static string DecipherUserName(string user)
{
if(!user.Contains("("))
return user;
int start = user.IndexOf("(");
return user.Substring(start).Replace("(", string.Empty).Replace(")", string.Empty);
}
Autre que mon (non) saine aversion pour RegEx, est-il un moyen plus simple d'analyser le sous-chaîne?
Edit: Pour clarifier les choses, la chaîne à analyser sera toujours de: "Joe Smith (jsmith)" (sans guillemets).
De note: j'ai accepté le refactor par Pax sur la solution RegEx fournie car je sens à long terme, ce sera plus maintenable jusqu'à ce que je devienne plus versé dans RegEx. Cela, et un test rapide de 1000 noms ont eu la solution RegEx à .1165195 ms vs. String solution à .0077423 ms. –
Pour une simple correspondance de texte comme celle-ci, les RE sont généralement plus lents (bien qu'ils puissent être compilés une fois pour une vitesse supplémentaire dans une boucle). Leur véritable avantage vient de leur expressivité pour des cas plus complexes (par exemple, autoriser et supprimer des espaces à l'intérieur des parenthèses). Ça vaut vraiment la peine d'apprendre, alors continuez comme ça. – paxdiablo