C#, .NET 3.5Analisi di una stringa in C#; c'è un modo più pulito?
Questo mi sa solo di brutto, ma non riesco a pensare a un altro modo.
Dato una stringa con il formato di "Joe Smith (jsmith)" (senza virgolette), vorrei analizzare solo la stringa 'jsmith' all'interno della parentesi. Mi è venuta in mente questo:
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);
}
Altro che la mia (dis) l'avversione sano per RegEx, c'è un modo più semplice per analizzare la stringa?
Edit: Per chiarire, la stringa da analizzare sarà sempre di: "Joe Smith (jsmith)" (sans virgolette).
Nota: ho accettato il refactor di Pax sulla soluzione RegEx fornita come ritengo a lungo termine, questo sarà più mantenibile finché non diventerò più esperto in RegEx. Quello e un test rapido di 1000 nomi avevano la soluzione RegEx a .1165195 ms rispetto alla soluzione String a .0077423 ms. –
Per una semplice corrispondenza del testo come questa, le RE sono di solito più lente (anche se possono essere compilate una volta per una maggiore velocità in un ciclo). Il loro vero vantaggio deriva dalla loro espressività per i casi più complessi (ad esempio, consentendo e rimuovendo gli spazi all'interno delle parentesi). Vale veramente la pena imparare, quindi continua così. – paxdiablo