Pergunta

Um requisito para um ASP.Net 2.0 projeto que eu estou trabalhando nos limites de um determinado campo para um máximo de 10 palavras (não caracteres).Atualmente estou usando um controle CustomValidator com a seguinte ServerValidate método:

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

Alguém tem mais amplos e precisos método de obtenção de uma contagem de palavras?

Foi útil?

Solução 2

Este regex parece estar funcionando muito bem:

"^(\b\S+\b\s*){0,10}$"

Atualização:acima tinha algumas falhas, então eu acabei usando este RegEx:

[\s\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\xBF]+

Eu split() a seqüência em que regex e usar o length da matriz resultante para obter a correta contagem de palavra.

Outras dicas

Você pode usar um dos builtin validadores com uma regex que conta as palavras.

Eu estou um pouco enferrujado com regex para ir fácil sobre mim:

(\b.*\b){0,10}

Eu votei para mharen a resposta, e comentou-o bem, mas desde que os comentários são ocultas por padrão, deixe-me explicar novamente:

A razão que você gostaria de usar regex avaliador, ao invés de incluir o validador personalizado é que a regex validador irá igualmente validar automaticamente os regex do lado do cliente usando javascript, se disponível.Se eles passam a validação não é grande coisa, mas cada vez que alguém falha a validação do lado do cliente que você salvar o seu server de fazer uma nova postagem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top