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

Откуда:
Сообщений: 40
Доброго вечера!
Имеются каталоги вида xx2020 rfr2019.dsk yy2017 qwert,yu asdfg и т.д. (в каталоге есть/нет год)
Нужно изящно проверить в названии каталога наличие 4-х цифр подряд, азатем уже чтобы эти цифры были
Between(Year,2010,2050)
Спасибо!
15 сен 20, 21:30    [22197843]     Ответить | Цитировать Сообщить модератору
 Re: Поиск цифр  [new]
asdor
Member

Откуда: Москва
Сообщений: 502
ValeryIvanovich,

https://www.sql.ru/forum/job
16 сен 20, 07:31    [22198042]     Ответить | Цитировать Сообщить модератору
 Re: Поиск цифр  [new]
Dima T
Member

Откуда:
Сообщений: 14987
Изящно не получится, напиши свою UDF функцию: ищешь очередную цифру, читаешь 3 символа после нее, проверяешь и т.д.

Данная задача решается регулярными выражениями, но их в фоксе нет. Хотя можно внешними компонентами их выполнять, если использование внешнего софта допустимо.
16 сен 20, 07:44    [22198048]     Ответить | Цитировать Сообщить модератору
 Re: Поиск цифр  [new]
Redrik
Member

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

А если так? (текущий каталог)

CLEAR
MD 1999asdfg
MD asdfg
MD asdfg2100
MD qwert
MD rfr2019.dsk
MD xx2020
MD yu
MD yy2017

***

=ADIR(lcYear,"","D")
FOR j=1 TO ALEN(lcYear,1)
	IF lcYear(j,1)="." OR lcYear(j,1)=".."
		LOOP
	ENDIF
	lcMask=CHRTRAN(lcYear(j,1),"1234567890","")
	lcSlovo=CHRTRAN(lcYear(j,1),lcMask,SPACE(LEN(lcMask)))
	FOR i=1 TO GETWORDCOUNT(lcSlovo)
		IF BETWEEN(VAL(GETWORDNUM(lcSlovo,i)),2010,2050)
			?lcYear(j,1)
		ENDIF
	ENDFOR
ENDFOR

***

RD 1999asdfg
RD asdfg
RD asdfg2100
RD qwert
RD rfr2019.dsk
RD xx2020
RD yu
RD yy2017
16 сен 20, 11:06    [22198190]     Ответить | Цитировать Сообщить модератору
 Re: Поиск цифр  [new]
FFFFFFFF
Member

Откуда:
Сообщений: 26
s="xx2020 rfr2019.dsk yy2017 qwert,yu asdfg"
? AT("2019",s)
16 сен 20, 11:21    [22198213]     Ответить | Цитировать Сообщить модератору
 Re: Поиск цифр  [new]
ValeryIvanovich
Member

Откуда:
Сообщений: 40
Redrik,
Спасибо! Я так уже и сделал
16 сен 20, 15:39    [22198515]     Ответить | Цитировать Сообщить модератору
 Re: Поиск цифр  [new]
ValeryIvanovich
Member

Откуда:
Сообщений: 40
FFFFFFFF,
Спасибо, но только s может быть какой угодно длины и 2019 м.быть 2020 2021 и т д
16 сен 20, 15:41    [22198518]     Ответить | Цитировать Сообщить модератору
 Re: Поиск цифр  [new]
Dima T
Member

Откуда:
Сообщений: 14987
Redrik
=ADIR(lcYear,"","D")
FOR j=1 TO ALEN(lcYear,1)

Это можно так писать
FOR j=1 TO ADIR(lcYear,"","D")
16 сен 20, 15:46    [22198522]     Ответить | Цитировать Сообщить модератору
 Re: Поиск цифр  [new]
FFFFFFFF
Member

Откуда:
Сообщений: 26
ValeryIvanovich
FFFFFFFF,
Спасибо, но только s может быть какой угодно длины и 2019 м.быть 2020 2021 и т д

Это не играет никакой роли.
16 сен 20, 16:28    [22198556]     Ответить | Цитировать Сообщить модератору
 Re: Поиск цифр  [new]
Redrik
Member

Откуда:
Сообщений: 805
Dima T,

+++
Не просто "можно" - НУЖНО! :)
16 сен 20, 16:53    [22198586]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить