Текущий архив: 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.47 MB
Время: 0.009 c