Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1288418090
ilyas09
2010-10-30 09:54
2011.01.23
Приостановить выполнение потока на 1 мс или меньше.


3-1252044820
noob_one
2009-09-04 10:13
2011.01.23
Узнать ip адрес клиента из базы данных. Interbase 7.5


15-1286604563
TUser
2010-10-09 10:09
2011.01.23
Антигедонистическое


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


2-1288267508
RWolf
2010-10-28 16:05
2011.01.23
Редактирование XML





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский