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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top