2011-05-03 17 views
16

Estoy muy mal con expresiones regulares pero quiero eliminar todos estos,;:.!? ' "$ # @/*^& - + de una cadenapuntuacion de cadena con expresiones regulares

string x = "This is a test string, with lots of: punctuations; in it?!."; 

¿Cómo puedo hacer que

+4

Por qué no simplemente ejecutar un String.Replace? El rendimiento sin dudas será mejor y el código será mucho más legible para arrancar. – Tejs

+1

posible duplicado de [La mejor manera de quitar la puntuación de una cadena] (http://stackoverflow.com/questions/421616/best-way-to-strip-punctuation-from-a-string) –

+0

@Tejs: El rendimiento puede o puede que no sea mejor, dependiendo de la longitud de la cadena y la cantidad de caracteres que se deben reemplazar. Además, el código no sería necesariamente menos legible. Mucha gente tiene una aversión al uso de expresiones regulares porque se ven crípticas, pero al igual que cualquier otro código, comentarlos ayudará con eso. –

Respuesta

46

en primer lugar, por favor read here para obtener información sobre las expresiones regulares vale la pena aprender

Se puede utilizar esta:?..

Regex.Replace("This is a test string, with lots of: punctuations; in it?!.", @"[^\w\s]", ""); 

Lo que significa:

[ #Character block start. 
^ #Not these characters (letters, numbers). 
\w #Word characters. 
\s #Space characters. 
] #Character block end. 

Al final se lee "reemplazar cualquier carácter que no es un carácter de palabra o un carácter de espacio sin nada".

+0

Recibo una secuencia de escape no reconocida en \ w \ s – Sjemmie

+0

Actualizando mi respuesta ... solo tiene que escapar de las barras diagonales. –

+0

Lo tengo, funciona bien – Sjemmie

Cuestiones relacionadas