On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение



Пост N: 105
Зарегистрирован: 15.12.06
ссылка на сообщение  Отправлено: 19.10.10 12:21. Заголовок: Как проверить файл на соответствие маске?


Такой глупый вопрос, но ответа я не могу найти, хотя вещь вроде стандартная. Существует ли стандартная функция, которая определяет, соответствует ли имя файла (скажем, '5544.832') маске (скажем, '*.832')? Просто две строки на входе и логика на выходе. Наверняка не мне одному это понадобится.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 10 [только новые]


постоянный участник


Пост N: 977
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 19.10.10 12:47. Заголовок: Для Harbour смотрите..


Для Harbour смотрите

? hb_wildMatch("*.832","5544.832", .f. )
? hb_wildMatch("*.832","5544.832", .t. )

? hb_wildMatch("*.837","5544.832", .f. )
? hb_wildMatch("*.837","5544.832", .t. )

Есть еще регистронезависимый вариант - функция hb_wildMatchI

Для xHb скорее всего эта функция называется WildMatch

Спасибо: 1 
ПрофильЦитата Ответить



Пост N: 14
Зарегистрирован: 28.07.10
ссылка на сообщение  Отправлено: 22.10.10 07:10. Заголовок: до кучи - похожий вопрос


как проверить на соответствие формату?
например - от 1 до 3 цифр "." от 1 до 3 цифр "." - короче АйПишник
или - две больших русских буквы "-" две цифры
и т.п.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1886
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 22.10.10 10:16. Заголовок: SADSTAR33 пишет: ка..


SADSTAR33 пишет:

 цитата:
как проверить на соответствие формату?


HB_RegExMatch

+ почитать , это для начала
http://www.codenet.ru/webmast/php/regexps.php<\/u><\/a>

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 22.10.10 10:45. Заголовок: 1. Регулярными выраж..


1. Регулярными выражениями
2. не от 1 до 3 цифр, а от 0 до 255.
и айпи может записываться различными способами
0300.0xab.1.1 - первый байт в 8ричном виде, второй в 16ричном
или одним 4-байтовым целым
3578349857
надо использовать специальную библиотек для работы с айпи)))

Спасибо: 0 
Цитата Ответить



Пост N: 15
Зарегистрирован: 28.07.10
ссылка на сообщение  Отправлено: 25.10.10 02:47. Заголовок: Вариант


Вариант
Проверка на соответствие десятично-точечному формату
 
function IsIP(p)
local result:=.t., ar:={}, a, l, i
ar:=HB_ATOKENS(p,".")
if len(ar)#4; return .f.; endif
for i:=1 to 4
a:=ar[ i ]
l:=len(a)
if l=1
if !HB_RegExMatch("\d",a)
result:=.f.
endif
elseif l=2
if !HB_RegExMatch("[1-9]\d",a)
result:=.f.
endif
elseif l=3
if !HB_RegExMatch("[1-2]\d\d",a)
result:=.f.
elseif val(a)>255
result:=.f.
endif
else
result:=.f.
endif
if !result; exit; endif
next
return result



Насколько рационально?
Можно все result:=.f. заменить на return .f., убрать прерывание цикла и закончить return .t.
т.е. убрать переменную result совсем


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1887
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.10.10 11:57. Заголовок: Еще вариант (самый п..


Еще вариант (самый простой и при желании его можно навернуть)

 
Func IsIP(p)
return HB_RegExMatch("([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})",p)



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 16
Зарегистрирован: 28.07.10
ссылка на сообщение  Отправлено: 26.10.10 00:09. Заголовок: 333.333.333.333 прой..


Этот вариант я первым делом проверил прежде чем наворотами заниматься
333.333.333.333 пройдет?
333.333.333.3334 тоже пройдет.
12345.333.333.12345 тоже пройдет.
вот так уже лучше
"^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})$"
но все равно на max255 не проверяет



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1888
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.10.10 07:39. Заголовок: SADSTAR33 пишет: &#..


SADSTAR33 пишет:

 цитата:
"^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})$"
но все равно на max255 не проверяет


Точно , не подумал

 
Func IsIP(p)
local ret:=.t.
local creg:="^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})$"
local j
if !HB_RegExMatch(creg,p)
return .f.
endif
for each j in HB_ATOKENS(p,".")
if val(j)>255
return .f.
endif
next
return ret


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 18
Зарегистрирован: 28.07.10
ссылка на сообщение  Отправлено: 26.10.10 08:30. Заголовок: Для полного счастья ..


Для полного счастья -
удалить local ret:=.t.
заменить return ret на return .t.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1889
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.10.10 08:35. Заголовок: SADSTAR33 пишет: lo..


SADSTAR33 пишет:

 цитата:
local ret:=.t.


это уже привычка ;)

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 170
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет