частичное изменение строковой переменной

Обсуждение программ nnCron и nnCron LITE

частичное изменение строковой переменной

Postby makrus » Mon, 12 Jul 2004, 16:42

Здравствуйте!
Во-первых хочу поблагодарить создателей такой замечательной программы как nnCron как за саму программу так и за замечательно организованную поддержку: конференция, форумы (включая этот) и очень подробная справка (на русском языке). Спасибо, и прошу прощение за это "лирическое отступление".

Во-вторых непосредственно сама проблема:
одна программа записывает звук в формате mp3, но присваивает файлам расширение wav. Так вот задача состоит в том, что бы поменять расширение файла, а имя оставить тем же. Я ознакомился с регулярными выражениями, и если я правильно понял, то они помогают отсортировать файлы в зависемости от имени, но меня интересует как можно изменить само имя?
В help'е (глава "Неотложная помощь по Форту") приводятся примеры с подобными задачами, но сделать "по образу и подобию" у меня пока не получилось, и в первую очередь потому, что там используются слова не описанные в help'е.
Если все же проблема решается с помощью рег. выражений, то, пожалуйста приведите фрагмент кода для смены расширения у файла.
все познается в сравнении
makrus
 
Posts: 336
Joined: Mon, 12 Jul 2004, 14:46
Location: Волгоград

Re: частичное изменение строковой переменной

Postby Valery_Kondakoff » Mon, 12 Jul 2004, 18:17

makrus wrote:Я ознакомился с регулярными выражениями, и если я правильно понял, то они помогают отсортировать файлы в зависемости от имени, но меня интересует как можно изменить само имя?

Code: Select all
#( test_regexp_rename
NoActive
Action:
    FOR-FILES: "C:\TEMP\*.*"
        RE-MATCH: "%FOUND-FULLPATH%" "/(.*)\.wav/i"
        IF
            FILE-RENAME: "%FOUND-FULLPATH%" "%$1%.mp3"
        THEN
    ;FOR-FILES
)#


В help'е (глава "Неотложная помощь по Форту") приводятся примеры с подобными задачами, но сделать "по образу и подобию" у меня пока не получилось, и в первую очередь потому, что там используются слова не описанные в help'е.


Что за слова такие?
CU
VK
User avatar
Valery_Kondakoff
Site Admin
 
Posts: 769
Joined: Thu, 01 Jul 2004, 20:49
Location: Moscow, Russia

Postby makrus » Tue, 13 Jul 2004, 01:35

Большое спасибо за работающую задачу, но к своему стыду я до сих пор не понимаю как это работает :(.

$1 - первая группа которая хранит целиком все имя файла, включая .wav
и тогда после
FILE-RENAME: "%FOUND-FULLPATH%" "%$1%.mp3"

файл должен называться к примеру "111.wav.mp3", а получается "111.mp3"!!! Но почему? Почему заменяются именно последние три символа, а не первые или где-нибудь в середине?
Что-то я не понимаю в регулярных выражениях :(. Может быть есть еще какой-нибудь справочный материал по рег. выражениям?

Что за слова такие?

"А какие еще есть "пpодвинутые" сpедства pаботы со стpоками?"
...
\ укоpачиваем str1 на 5 символов спpава
\ и помещаем pезультат в str2
str1 COUNT 5 - 0 MAX str2 PLACE
MSG: "%str2 COUNT%"
\ помещаем в str2 пеpвые 10 символов из str1
str1 COUNT 10 MIN str2 PLACE
MSG: "%str2 COUNT%"

Именно с помощью этих примеров, как мне кажется, можно сделать то же самое, но по MAX и MIN в справке ничего не нашел.
все познается в сравнении
makrus
 
Posts: 336
Joined: Mon, 12 Jul 2004, 14:46
Location: Волгоград

Postby Valery_Kondakoff » Tue, 13 Jul 2004, 05:17

makrus wrote: $1 - первая группа которая хранит целиком все имя файла, включая .wav

Нет. Что об этом говорится в доке?
Что касается доп. инфы о регекспах, то этой инфы полно в интернете. Заставь себя дойти до ближайшего поисковика. :)

Именно с помощью этих примеров, как мне кажется, можно сделать то же самое, но по MAX и MIN в справке ничего не нашел.

http://www.nncron.ru/download/spf_help.zip
CU
VK
User avatar
Valery_Kondakoff
Site Admin
 
Posts: 769
Joined: Thu, 01 Jul 2004, 20:49
Location: Moscow, Russia

Postby makrus » Tue, 31 Aug 2004, 21:08

To Valery_Kondakoff: это тот пост который "пропал"

Нет. Что об этом говорится в доке?


С этим я ознакамливался неоднократно, но только после того что
оказалось неверным предположением, я понял как работает приведенная тобой задача, и, самое главное, где я ошибался. Меня сбило с толку два момента :
1. для переменных $0-$15 больше подходит название именно совпадения, а не группы
2. в help'е совпадения разделены пробелом.
Другими словами группы я воспринял как группы символов разделенных пробелами, в общем, налицо "инерционность мышления" :).
Тогда в приведенной тобой задаче совпадение $1 - хранит имя файла от начала до ".", т. е. все что попадает в скобки. Теперь надеюсь правильно я понял? :)

Несомненно в своей ошибке я виноват сам на все 100%, но что бы остальные не наступали на мои грабли, мне кажется в Help'е в качестве примера лучше привести не два "слова" разделенных пробелом, а одно из разных символов и показать "вычленение" совпадений по любому символу кроме пробела.

Что касается доп. инфы о регекспах, то этой инфы полно в интернете. Заставь себя дойти до ближайшего поисковика.

Да, дойти-то без проблем, но в справке говориться что синтаксис рег. выражений у nnCron'а и Perl'а совпадают, только и здесь есть небольшие отличия:
Небольшие отличия есть только в некоторых расширенных специфических операторах.

т. е. я так понял рег. выражения не стандартизированы, как например HTML. Тогда можно выучить "не то", а переучиваться всегда сложнее чем учить, да и время жалко, ну что ж, тогда будем искать инфу о Perl'е.

Про MAX и MIN я понял (так мне кажется :) ), спасибо.
все познается в сравнении
makrus
 
Posts: 336
Joined: Mon, 12 Jul 2004, 14:46
Location: Волгоград


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: Google [Bot] and 6 guests