Подсчет слов в ASP.Net с помощью специального валидатора - PullRequest
3 голосов
/ 09 сентября 2008

Требование для проекта ASP.Net 2.0, над которым я работаю, ограничивает определенное поле максимум 10 словами (не символами). В настоящее время я использую элемент управления CustomValidator со следующим методом ServerValidate:

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

У кого-нибудь есть более тщательный / точный метод подсчета слов?

Ответы [ 3 ]

5 голосов
/ 09 сентября 2008

Вы можете использовать один из встроенных валидаторов с регулярным выражением, которое считает слова.

Я немного пристрастился к регулярным выражениям, поэтому будьте осторожны со мной:

(\b.*\b){0,10}
1 голос
/ 09 сентября 2008

Это регулярное выражение работает отлично:

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

Обновление : выше было несколько недостатков, поэтому я в конечном итоге использовал этот RegEx:

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

I split() строка в этом регулярном выражении и использование length результирующего массива для получения правильного количества слов.

0 голосов
/ 09 сентября 2008

Я проголосовал за ответ Мхарена и прокомментировал его, но, поскольку комментарии по умолчанию скрыты, позвольте мне объяснить это еще раз:

Причина, по которой вы хотите использовать валидатор регулярных выражений, а не пользовательский валидатор, заключается в том, что валидатор регулярных выражений также автоматически проверяет клиентскую часть регулярного выражения с помощью javascript, если он доступен. Если они проходят проверку, это не страшно, но каждый раз, когда кто-то не проходит проверку на стороне клиента, вы спасаете свой сервер от выполнения обратной передачи.

...