C#, .NET 3.5Analizando una cadena en C#; ¿hay una manera más limpia?
Esto me huele feo, pero no se me ocurre otra manera.
Dada una cadena con el formato "Joe Smith (jsmith)" (sin comillas), me gustaría analizar solo la cadena 'jsmith' entre paréntesis. Yo he llegado con esto:
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);
}
Aparte de mi (des) aversión saludable para expresiones regulares, hay una manera más fácil de analizar fuera de la subcadena?
Editar: Para aclarar, la cadena a analizar será siempre de: "Joe Smith (jsmith)" (sans comillas).
Nota: acepté el refactor de Pax sobre la solución RegEx, ya que creo que a largo plazo, será más fácil de mantener hasta que tenga más conocimientos sobre RegEx. Eso, y una prueba rápida de 1000 nombres tuvo la solución RegEx en .1165195 ms frente a la solución String en .0077423 ms. –
Para una coincidencia de texto simple como esta, las RE son generalmente más lentas (aunque pueden compilarse una vez para obtener velocidad extra en un bucle). Su ventaja real viene con su expresividad para casos más complejos (por ejemplo, permitir y eliminar espacios dentro del paréntesis). Merece la pena aprender, así que sigan así. – paxdiablo