ASP.Net conteggio parole con un custom validator
-
09-06-2019 - |
Domanda
Un requisito per un ASP.Net 2.0 progetto a cui sto lavorando limiti di un certo campo per un max di 10 parole (non personaggi).Attualmente sto usando un CustomValidator di controllo con il seguente ServerValidate metodo:
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
Qualcuno ha una più approfondita di una accurata metodo di ottenere un conteggio di parola?
Soluzione 2
Questa regex sembra funzionare grande:
"^(\b\S+\b\s*){0,10}$"
Aggiornamento:di cui sopra ha avuto un paio di difetti così ho finito per usare questa espressione regolare:
[\s\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\xBF]+
Io split()
la stringa che regex e utilizzare il length
dell'array risultante per ottenere il giusto numero di parole.
Altri suggerimenti
È possibile utilizzare uno dei builtin validatori con una regex che conta le parole.
Io sono un po ' arrugginito con le regex in modo da andare facile su di me:
(\b.*\b){0,10}
Ho votato per mharen risposta, e commentato su di esso, ma dato che i commenti sono nascosti per impostazione predefinita mi spiego di nuovo:
Il motivo che si desidera utilizzare per l'espressione regolare, validatore, piuttosto che il custom validator è che la regex validatore automatico convalidare la regex lato client con javascript, se è disponibile.Se passano la validazione non è un grosso problema, ma ogni volta che qualcuno non riesce la convalida lato client si salva il tuo server da fare un postback.