Форум: "Начинающим";
Текущий архив: 2011.01.23;
Скачать: [xml.tar.bz2];
Внизпарсинг строки имени файла Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.014 c