¿Cómo elimino todos los caracteres no alfanuméricos de una cadena excepto el guión?

Resuelto Luke101 asked hace 14 años • 13 respuestas

¿Cómo elimino todos los caracteres no alfanuméricos de una cadena, excepto los guiones y los espacios?

Luke101 avatar Jul 09 '10 13:07 Luke101
Aceptado

Reemplace [^a-zA-Z0-9 -]con una cadena vacía.

Regex rgx = new Regex("[^a-zA-Z0-9 -]");
str = rgx.Replace(str, "");
Amarghosh avatar Jul 09 '2010 06:07 Amarghosh

Podría haber usado RegEx, pueden proporcionar una solución elegante pero pueden causar problemas de rendimiento. Aquí hay una solución

char[] arr = str.ToCharArray();

arr = Array.FindAll<char>(arr, (c => (char.IsLetterOrDigit(c) 
                                  || char.IsWhiteSpace(c) 
                                  || c == '-')));
str = new string(arr);

Cuando se utiliza el marco compacto (que no tiene FindAll)

Reemplace BuscarTodo con 1

char[] arr = str.Where(c => (char.IsLetterOrDigit(c) || 
                             char.IsWhiteSpace(c) || 
                             c == '-')).ToArray(); 

str = new string(arr);

1 comentario de ShawnFeatherly

ata avatar Jul 09 '2010 07:07 ata