2008-09-09 13 views
3

Eine Anforderung für ein ASP.Net 2.0-Projekt, an dem ich arbeite, beschränkt ein bestimmtes Feld auf maximal 10 Wörter (keine Zeichen). Ich bin derzeit eine CustomValidator Steuerung mit der folgenden ServerValidate Methode:ASP.Net Wortzählung mit einem benutzerdefinierten Validator

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 

Hat jemand eine gründlichere/genaue Methode des Erhaltens ein Wort zählen?

Antwort

1

Diese Regex scheint sehr gut zu funktionieren:

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

aktualisieren: die oben ein paar Fehler hatte, damit ich dieses RegEx landete mit:

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

I split() die Zeichenfolge auf, dass Regex und verwenden Sie die length des resultierenden Array, um die richtige Wortzahl zu erhalten.

4

Sie können einen der eingebauten Validatoren mit einem regulären Ausdruck verwenden, der die Wörter zählt.

Ich bin ein wenig rostig mit regex auf mich so gehen einfach:

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

Der Grund, warum Sie dies tun möchten, ist, dass der integrierte Regex-Validierer auch Client-Seite automatisch mit Javascript für Sie validieren wird. Wenn sie die Validierung nicht bestehen, speichern Sie ein Postback. –

+0

Leider passt diese Regex nicht richtig, ich werde damit spielen, um zu sehen, ob ich es zur Arbeit bekommen kann. Vielen Dank! – travis

0

Ich habe für mharen Antwort, und auf sie als gut kommentiert, aber da die Kommentare standardmäßig ausgeblendet sind, lassen Sie es mich erklären wieder:

Der Grund, warum Sie den Regex-Validator anstelle des benutzerdefinierten Validators verwenden möchten, ist, dass der Regex-Validierer die Regex-Client-Seite auch automatisch mit Javascript validiert, wenn es verfügbar ist. Wenn sie die Validierung bestehen, ist das keine große Sache, aber jedes Mal, wenn jemand die clientseitige Validierung nicht besteht, speichern Sie Ihren Server von einem Postback.

+0

Joel, danke für die Erklärung meiner Wahl! In Bezug auf Kommentare: ja, ich denke, es wäre schön, wenn die ersten paar auf jeder Antwort standardmäßig erweitert wurden. Oder zumindest ein bisschen mehr hervorgehoben. –

+0

Der zusätzliche Postback ist in diesem Fall irrelevant, aber ich denke, ich werde sehen, ob ich die Regex trotzdem arbeiten kann. Vielen Dank! – travis

Verwandte Themen