Recuento de palabras ASP.Net con un validador personalizado
-
09-06-2019 - |
Pregunta
Un requisito para un proyecto ASP.Net 2.0 en el que estoy trabajando limita un determinado campo a un máximo de 10 palabras (no caracteres).Actualmente estoy usando un control CustomValidator con el siguiente método ServerValidate:
Protected Sub TenWordsTextBoxValidator_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles TenWordsTextBoxValidator.ServerValidate
'' 10 words
args.IsValid = args.Value.Split(" ").Length <= 10
End Sub
¿Alguien tiene un método más completo/preciso para contar palabras?
Solución 2
Esta expresión regular parece estar funcionando muy bien:
"^(\b\S+\b\s*){0,10}$"
Actualizar:lo anterior tenía algunos defectos, así que terminé usando esta expresión regular:
[\s\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\xBF]+
I split()
la cadena en esa expresión regular y use el length
de la matriz resultante para obtener el recuento de palabras correcto.
Otros consejos
Puede utilizar uno de los validadores integrados con una expresión regular que cuente las palabras.
Estoy un poco oxidado con las expresiones regulares, así que ten cuidado conmigo:
(\b.*\b){0,10}
Voté por la respuesta de mharen y también la comenté, pero como los comentarios están ocultos de forma predeterminada, déjame explicarlo nuevamente:
La razón por la que desea utilizar el validador de expresiones regulares en lugar del validador personalizado es que el validador de expresiones regulares también validará automáticamente el lado del cliente de expresiones regulares usando javascript, si está disponible.Si pasan la validación, no es gran cosa, pero cada vez que alguien falla la validación del lado del cliente, evita que su servidor realice una devolución de datos.