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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top