2009-11-01 69 views

Respuesta

80

intente lo siguiente:

var output = Regex.Replace(input, @"[\d-]", string.Empty); 

El identificador \d simplemente coincide con cualquier carácter de dígito.

+0

gracias por la ayuda – Gold

3
var result = Regex.Replace("123- abcd33", @"[0-9\-]", string.Empty); 
10

Puede hacerlo con un LINQ como solución en lugar de una expresión regular:

string input = "123- abcd33"; 
string chars = new String(input.Where(c => c != '-' && (c < '0' || c > '9')).ToArray()); 

Una prueba de rendimiento rápido muestra que esto es aproximadamente cinco veces más rápido que usar una expresión regular.

+0

Hubiera pensado que sería al revés ... interesante. – SirDemon

+0

@SirDemon: Sí, LINQ generalmente no es la opción más rápida, pero las expresiones regulares tienen una sobrecarga inicial más grande. Para las operaciones en cadenas cortas, la configuración del objeto RegEx toma más tiempo que el trabajo real. – Guffa

+0

@Guffa ¿Sabes cómo funciona esto? Digamos que en 50k registros debería ir para RegEx? –

Cuestiones relacionadas