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

Вниз

парсинг строки имени файла   Найти похожие ветки 

 
LDV   (2010-10-27 11:24) [0]

имеется список имен файлов вида:

upd_7_11.zip
upd_18_24.zip
upd_365_391.zip

Задача получить 2 целочисленных значения из имени файла. Подскажите, как грамотнее всего сделать:

набросал пока 2 варианта:


procedure get_pack_vers1(const Afile_name: string; out Afrom, Ato: Integer);
var
 N1, N2, N3: Integer;
begin
 N1 := Pos("_", Afile_name);
 Assert(N1 > 0);
 N2 := PosEx("_", Afile_name, N1 + 1);
 Assert(N2 > 0);
 N3 := PosEx(".", Afile_name, N2 + 1);
 Assert(N3 > 0);
 Afrom := StrToInt(Copy(Afile_name, N1 + 1, N2 - (N1 + 1)));
 Ato   := StrToInt(Copy(Afile_name, N2 + 1, N3 - (N2 + 1)));
end;

procedure get_pack_vers2(const Afile_name: string; Afrom, Ato: Integer);
var
 RegEx: TRegEx;
begin
 RegEx.Create("\d+");
 with RegEx.Matches(Afile_name) do
 begin
   Afrom := StrToInt(Item[0].Value);
   Ato   := StrToInt(Item[0].Value);
 end;
end;


1 - й вариант в моей реализации кажется громоздким
на счет 2-го не уверен, правильно ли использовать регэкспы для такой задачи.


 
Плохиш ©   (2010-10-27 11:33) [1]


> 1 - й вариант в моей реализации кажется громоздким

Выкинуть три строки с Assert-ами и добавить одну проверку перед переводами и вся громоздкость пропадёт.

> на счет 2-го не уверен

Да мелочь. Едешь на велосипеде, который прицеплен к камазу.


 
Dennis I. Komarov ©   (2010-10-27 14:21) [2]

первые 4-символа одинаковые - выкидываем их
остается с 1-ого до _
и с _ до .
(+- 1 позиция)



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

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

Наверх




Память: 0.47 MB
Время: 0.006 c
4-1243713398
Nikfel
2009-05-30 23:56
2011.01.23
Замена ресурсов из dll файлов?


15-1286396952
Юрий
2010-10-07 00:29
2011.01.23
С днем рождения ! 7 октября 2010 четверг


2-1288286941
Scott Storch
2010-10-28 21:29
2011.01.23
масштабирование


2-1288134132
Германн
2010-10-27 03:02
2011.01.23
Работа с "хранилищем объектов" (Repository)


4-1243758013
Unknown user
2009-05-31 12:20
2011.01.23
IsHandleValid?