Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.19;
Скачать: CL | DM;

Вниз

Части имени файла по шаблону   Найти похожие ветки 

 
anod ©   (2003-12-04 22:30) [0]

Здраствуйте,
Я довольно долго думаю над этим,но никак не найду ничего универсального.
Есть у меня шаблон, например (но необязательно именно этот, думаю видели в программах такие) " %tracknum%. %artist% - %title%"
Есть имя файла: "16. Чиж и Ко - Есть!.mp3"
Ну соответственно надо создать массив в котором нужным элементам шаблона соответствовал нужны элемент имени файла.
Если кто-то встречал алгоритм или есть какие либо идеи по алгоритму, поделитесь, пожалуйста...


 
panov ©   (2003-12-04 22:39) [1]

Шаблону может соответствовать толтько вся строка с именем файла.
Сложно в Windows определить элементы имени.
даже в твоем примере не выделить со 100% уверенностью элементы.

Хотя здесь есть закономерность, но решение не будет универсальным.

" 16. Чиж и Ко - Есть!.mp3"
Этот элемент понятен - выделяем с начала строки до первой точки.

"16. Чиж и Ко - Есть!.mp3"
Этот уже представляет сложность, так как в названии группы может встретиться тире. Решением будет искать от первой точки до последнего "тире".

"16. Чиж и Ко - Есть!.mp3"
Этот элемент тоже просто - от последнего "тире" до последней точки в имени.


 
anod ©   (2003-12-04 22:58) [2]

2panov
>"16. Чиж и Ко - Есть!.mp3"
>Этот элемент понятен - выделяем с начала строки до первой точки.
В том то и проблема, шаблон устанавливается юзером, можеть быть что угодно, у меня есть предположение что надо вырезать исходя из количества символов между элементами шаблона


 
Ломброзо ©   (2003-12-04 23:38) [3]

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


 
Ломброзо ©   (2003-12-04 23:40) [4]

и пускай сам сидит мучается!

^(\d+)\.\s+(.*)(\.mp3)$


 
anod ©   (2003-12-05 01:11) [5]

А в делфи есть регулярные выражения? не знал.
А что насчет парсера - именно его мне и надо написать, может где инфу взять полезную о стандартных алгоритмах (если таковые имеются)


 
Ломброзо ©   (2003-12-05 10:24) [6]

Статейка по конечным автоматам на RSDN.ru


 
anod ©   (2003-12-06 01:03) [7]

2 Ломброзо
Спасибо, за наводку...

Почитав, сделал что-то похожее на парсер - есть только одна глобальная проблема проблема, допустим есть шаблон:
%tracknum%. %artist% - %title%
и строка:
36. Чиж - Ко - Есть!
(Парсер примет за %artist% Чиж , а за %title% Ко - Есть!
Есть ли возможность вообще обработать эту ситуацию???
(наверно если только строку и шаблон одновременно рассматривать с двух сторон??)


 
Ломброзо ©   (2003-12-06 01:45) [8]

В теории регулярных выражений это называется "жадность" и "скупость". Жадный поиск захватывает с текущей позиции по максимуму до конца строки, потом в цикле сдвигает указатель на один символ в начало, то тех пор, пока не будет найдено совпадение, соответствующее шаблону. Скупой поиск наоборот, сдвигает в цикле указатель от текущей позиции в сторону конца строки до совпадения.
например дана строка

aa bb aa bb aa

Вот такое регулярное выражение ("жадное"):
[ aa.*bb ]
найдёт совпадение aa bb aa bb

, а такое ("скупое"):
[ aa.*?bb ]
найдёт aa bb


 
Ломброзо ©   (2003-12-06 01:46) [9]

.* - означает "ноль и больше любых символов c жадным поиском"
.*? - "ноль и больше любых символов cо скупым поиском"


 
anod ©   (2003-12-06 02:30) [10]

ok, а если так:
36. Чиж - Ко - Ес - ть!


 
anod ©   (2003-12-06 02:32) [11]

Всмысле, что не .* не .*? получается не подходит - здесь в принципе нельзя выловитб правду.
Но насчет рекомендации в случае с именами файлов что лучше,
> ("жадное")
or
> ("скупое")
??



Страницы: 1 вся ветка

Текущий архив: 2003.12.19;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
14-62265
Юрий Зотов
2003-11-21 19:24
2003.12.19
Кошка, гуляющая сама по себе или Я плакалъ.


14-62280
Passlight
2003-11-24 17:03
2003.12.19
Убить VSS, Access за 60 секунд


1-62004
Тролль
2003-11-27 08:35
2003.12.19
ListBox.Selected


14-62210
Unknown
2003-11-26 22:33
2003.12.19
Supreme_2 на другом форуме :)


6-62179
Andersen
2003-10-23 15:58
2003.12.19
UDP сканер