Frage

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 verwende derzeit ein CustomValidator-Steuerelement mit der folgenden ServerValidate-Methode:

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/genauere Methode, um die Wortzahl zu ermitteln?

War es hilfreich?

Lösung 2

Dieser reguläre Ausdruck scheint großartig zu funktionieren:

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

Aktualisieren:Das oben Gesagte hatte ein paar Mängel, daher habe ich dieses RegEx verwendet:

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

ICH split() die Zeichenfolge für diesen regulären Ausdruck und verwenden Sie die length des resultierenden Arrays, um die korrekte Wortanzahl zu erhalten.

Andere Tipps

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

Ich bin mit Regex etwas vertraut, also gehen Sie vorsichtig mit mir um:

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

Ich habe für Mharens Antwort gestimmt und sie auch kommentiert, aber da die Kommentare standardmäßig ausgeblendet sind, möchte ich es noch einmal erklären:

Der Grund, warum Sie den Regex-Validator anstelle des benutzerdefinierten Validators verwenden möchten, besteht darin, dass der Regex-Validator den Regex-Client auch automatisch mithilfe von Javascript validiert, sofern verfügbar.Wenn sie die Validierung bestehen, ist das keine große Sache, aber jedes Mal, wenn jemand die clientseitige Validierung nicht besteht, ersparen Sie Ihrem Server die Durchführung eines Postbacks.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top