Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PowerBuilder Новый топик    Ответить
 Match и посимвольное сравнение  [new]
zasranec2la
Member

Откуда:
Сообщений: 33
Всем доброго времени суток =) Вздумалось мне сделать проверки к каждому полю для посимвольной проверки вводимых данных и поместил я в событие itemchanged окна DW следующий код:
long count
count = dw_add_only_faculty.GetColumn()
choose case dwo.Name
	case "name_of_faculty"
		if not match(data , "^[A-Za-zА-Яа-я]") then
			MessageBox("Ошибка!" , "Название факультета не может содержать ничего кроме букв!" , StopSign!)
			dw_add_only_faculty.SetColumn(count)
		end if
end choose;
Вся суть проверки заключается в том, чтобы у меня данные могли вводится в виде любых букв (заглавных и прописных), а из знаков - только пробел. Но у меня вышла лишь проверка на проверку данных в начале строки, то есть выдаётся ошибка, если отличный от буквы символ встречается в начале строки. Как поправить, чтобы проверялась вся строка?
28 май 11, 18:44    [10724958]     Ответить | Цитировать Сообщить модератору
 Re: Match и посимвольное сравнение  [new]
zasranec2la
Member

Откуда:
Сообщений: 33
Upd1: единственное решение которое я вижу - это проверка на каждый знак, то есть:
match(data , "[!@#$%^&*()]")
Но как-то так очень не хочется...
28 май 11, 18:46    [10724963]     Ответить | Цитировать Сообщить модератору
 Re: Match и посимвольное сравнение  [new]
spas2001
Member

Откуда: Тамбов--->Москва-->Тамбов-->Москва-->Тамбов
Сообщений: 2010
Ну так проверяй в EditChanged, а не в ItemChanged
28 май 11, 20:21    [10725137]     Ответить | Цитировать Сообщить модератору
 Re: Match и посимвольное сравнение  [new]
AIS
Member

Откуда:
Сообщений: 1695
zasranec2la,
Вы что совсем-совсем отказываетесь Help читать?
Потрудитесь нажать F1 и посмотреть "Match PowerScript function", где всё подробно описано как строить "регулярные выражения"!
28 май 11, 23:42    [10725854]     Ответить | Цитировать Сообщить модератору
 Re: Match и посимвольное сравнение  [new]
zasranec2la
Member

Откуда:
Сообщений: 33
AIS,

представляете, нет такого раздела! Есть Match DataWindow Function. И я его читал. И по хожу прочтения возник вопрос. И я (как оказалось зря) наделся получить тут ответ на вопрос!!!
29 май 11, 00:10    [10725929]     Ответить | Цитировать Сообщить модератору
 Re: Match и посимвольное сравнение  [new]
AIS
Member

Откуда:
Сообщений: 1695
zasranec2la,
сомневаюсь, однако. ;)
Вот часть текста из help про функцию "Match":
Metacharacter	Meaning	Example
* (asterisk)	Indicates zero or more occurrences	A* matches zero or more As (no As, A, AA, AAA, and so on)
+ (plus)	Indicates one or more occurrences	A+ matches one A or more than one A (A, AAA, and so on)
? (question mark)	Indicates zero or one occurrence	A? matches an empty string ("") or A
Sample patterns    
The following table shows various text patterns and sample text that matches each pattern: 

This pattern	Matches
AB	Any string that contains AB; for example, ABA, DEABC, graphAB_one
B*	Any string that contains 0 or more Bs; for example, AC, B, BB, BBB, ABBBC, and so on
AB*C	Any string containing the pattern AC or ABC or ABBC, and so on (0 or more Bs)
AB+C	Any string containing the pattern ABC or ABBC or ABBBC, and so on (1 or more Bs)
ABB*C	Any string containing the pattern ABC or ABBC or ABBBC, and so on (1 B plus 0 or more Bs)
^AB	Any string starting with AB
AB?C	Any string containing the pattern AC or ABC (0 or 1 B)
^[ABC]	Any string starting with A, B, or C
[^ABC]	A string containing any characters other than A, B, or C
^[^abc]	A string that begins with any character except a, b, or c
^[^a-z]$	Any single-character string that is not a lowercase letter (^ and $ indicate the beginning and end of the string)
[A-Z]+	Any string with one or more uppercase letters
^[0-9]+$	Any string consisting only of digits
^[0-9][0-9][0-9]$	Any string consisting of exactly three digits
^([0-9][0-9][0-9])$	Any consisting of exactly three digits enclosed in parentheses
Советую поискать в форуме, либо в гугле по ключу "регулярные выражения".
29 май 11, 00:33    [10725985]     Ответить | Цитировать Сообщить модератору
 Re: Match и посимвольное сравнение  [new]
Anatoly Moskovsky
Member

Откуда: Odessa
Сообщений: 6610
zasranec2la
^[A-Za-zА-Яа-я]
Как поправить, чтобы проверялась вся строка?


^[A-Za-zА-Яа-я]+$
29 май 11, 03:54    [10726371]     Ответить | Цитировать Сообщить модератору
 Re: Match и посимвольное сравнение  [new]
AIS
Member

Откуда:
Сообщений: 1695
zasranec2la
...в виде любых букв (заглавных и прописных), а из знаков - только пробел...

Anatoly Moskovsky
zasranec2la
^[A-Za-zА-Яа-я]
Как поправить, чтобы проверялась вся строка?


^[A-Za-zА-Яа-я]+$

Так более точно ;)
^[A-Za-z А-Яа-я]+$
29 май 11, 13:25    [10726842]     Ответить | Цитировать Сообщить модератору
 Re: Match и посимвольное сравнение  [new]
zasranec2la
Member

Откуда:
Сообщений: 33
Anatoly Moskovsky, AIS, спасибо =)
29 май 11, 15:42    [10727174]     Ответить | Цитировать Сообщить модератору
Все форумы / PowerBuilder Ответить