Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2011.08.07;
Скачать: [xml.tar.bz2];

Вниз

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

 
DL   (2009-12-23 13:03) [0]

Имеется список строк формата:

 Attach_<ID>_<DateTime>.zip,

 например:

 "Attach_417_23_12_2009_11_52_31.zip".

Задача: из строки извлечь ID и DateTime. Вопрос, сообственно, в слдующем: какой подход грамотнее всего использовать при парсинге: RegExp"ы или же простые PosEx, Copy.


 
RWolf ©   (2009-12-23 13:11) [1]

регэкспами проще, конечно.
правда, размер программы подрастёт.


 
DL   (2009-12-23 13:34) [2]

с подходом определился. спасибо. теперь надо бы определиться с библиотекой для работы с regexp"ами. что посоветуете?


 
MBo ©   (2009-12-23 14:07) [3]

если формат жесткий, то регэкспы - излишество, достаточно разделения строки с помощью TStringList.DelimitedText


 
Юрий Зотов ©   (2009-12-23 14:54) [4]

> какой подход грамотнее всего использовать при
> парсинге: RegExp"ы или же простые PosEx, Copy

Применение РВ для такой детской задачки подобно стрельбе из пушки по воробьям.

> регэкспами проще, конечно.

???????????
Не наоборот?


 
Демо ©   (2009-12-23 15:26) [5]

Судя по формату - достаточно двух функций Copy.


 
DL   (2009-12-23 15:46) [6]

сделал так:


procedure TForm4.Button1Click(Sender: TObject);

 procedure PharsePacketName(const PacketName: string; out ID: Integer;
   out Received: TDateTime);
 begin
   with TStringList.Create do
     try
       Delimiter := "_";
       DelimitedText := PacketName;
       ID := StrToIntDef(Strings[1], -1);
       Received := EncodeDateTime(
         StrToIntDef(Strings[4], -1),
         StrToIntDef(Strings[3], -1),
         StrToIntDef(Strings[2], -1),
         StrToIntDef(Strings[5], -1),
         StrToIntDef(Strings[6], -1),
         StrToIntDef(Strings[7], -1), 0);
     finally
       Free;
     end;
 end;

var
 ID: Integer;
 Received: TDateTime;
begin
 PharsePacketName("attach_417_23_12_2009_13_50_04", ID, Received);
 ShowMessageFmt("ID: %d; Received: %s", [ID, DateTimeToStr(Received)]);
end;


 
TUser ©   (2009-12-23 17:33) [7]

На правах имхи

> Применение РВ для такой детской задачки подобно стрельбе
> из пушки по воробьям.

Применение электростанции+ЛЭП+лампочки тоже похоже на стрельбу их пушки по воробьям. И в программировании, вроде, очень похоже: например, для реализации массива нужен указатель и индексная арифметка. Но люди создают объекты, которые внутрь себя массив оборачивают. И всякий там TList при создании выделяет себе больше памяти, чем "нужно" и выполняет множество "лишнего" кода. Чисто стрельба из пушки.

Выбор любого инструмента определяется альтернативными издержками. А именно: 1. Насколько долго/трудно его заюзать и отладить. 2. Насколько быстро будет работать (варианты - сколько использует памяти, других ресурсов, насколько точный результат выдаст). Например, все, что угодно можно написать на асме, но долго писать. И в большинстве случаев выигрышь в скорости и в прочем будет не критичным. Ну будет программа записать не 360 Кб, а 1, а оно нафиг не надо. Аналогично и в другую сторону, - искать подстроку регэкспами, гораздо проще Боера-Мура, только тормознутее.

Так что выбор зависит от задачи. Если некое место в программе критично, то надо написать все ручками, гораздо оптимальнее стандартных pos/copy, а если не критично, то надо выбрать то, что проще писать. А последнее, к тому же, от конкретного писателя зависит.


 
Palladin ©   (2009-12-23 20:52) [8]


> Так что выбор зависит от задачи

Выбор зависит не от задачи, а от ее условий. Условия описаны ОДНОЗНАЧНЫЕ, алгоритм парсинга ОДНОЗНАЧНЫЙ, без ДВУСМЫСЛЕНОСТЕЙ. Электролампочки и ЛЭП станции тут нет.



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

Форум: "Основная";
Текущий архив: 2011.08.07;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.002 c
2-1303810026
Палыч
2011-04-26 13:27
2011.08.07
Экспорт графика Tchart


2-1304152965
armstrong
2011-04-30 12:42
2011.08.07
работа с графикой


15-1302985795
Юрий
2011-04-17 00:29
2011.08.07
С днем рождения ! 17 апреля 2011 воскресенье


15-1303203122
OW
2011-04-19 12:52
2011.08.07
MDI оболочка для любых программ


15-1302298974
Re
2011-04-09 01:42
2011.08.07
Delphi и Win7





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский