2012-01-13 14 views
14

Estaba buscando una forma de reemplazar todos los caracteres especiales con una función de reemplazo. Quiero utilizar la sintaxis de Razor, pero estoFunción Regex Replace con Razor

@Product.Name.Regex.Replace(@"[^A-Za-z0-9/\s/g]", "_") 

no hace el truco.

He intentado esto

@Regex.Replace(@Product.Name,@"[^A-Za-z0-9/\s/g]", "_") 

y falló también.

Por Ahora he intentado un montón de otras cosas y muchas veces me siguen dando este mensaje de error: "El nombre 'Regex' no existe en el contexto actual"

Puede alguien por favor ayuda ?

Respuesta

21

Debe agregar @using System.Text.RegularExpressions a la parte superior de la plantilla. Además, this question lo ayudará si desea que este espacio de nombres esté disponible en todas las plantillas.

+0

¡Muchas gracias! Eso hizo el truco. –

+0

Solo para agregar a la respuesta de Raskolnikov, cuando conoces el nombre correcto de la clase pero no conoces su espacio de nombre, presiona CTRL + PERIOD y Visual Studio sugerirá la función "resolver" para importar el espacio de nombre correcto. Pero no creo que esto funcione en la Vista, tal vez solo en los archivos cs. – programad

+0

Debería funcionar en la vista, pero no estoy del todo seguro ya que uso Resharper que definitivamente hace esto. Si no estás usando eso, te recomiendo que lo pruebes. –

6

sea completa, el código correcto para la expresión regular es:

@Regex.Replace(@Product.Name,@"[^A-Za-z0-9\.\,_]", "_") 

Esto reemplazará todos los caracteres especiales con un guión bajo.