Xpoint
   [напомнить пароль]

Ну получается сделать регулярное выражение

Метки: [без меток]
2008-10-14 05:59:14 [обр] Top manager(0/2)[досье]

Есть строка attachment; filename=f.zip;123
Хочу выделить f.zip, а если точенее, то что стоит после filename= и до первого ;.

Например, могут придти на вход строки:
attachment; filename=f.zip
attachment; filename=f.zip;
attachment; filename =f.zip;123
attachment; filename =f .zip
attachment; filename= f = [хъ].zip;123
attachment; filename = f--45.zip

Вобщем самые разные варианты

спустя 46 секунд [обр] Top manager(0/2)[досье]

Пробую
filename[ ]*=([\w\W^;]+)

Но не результат "пусто"

спустя 1 час 33 минуты [обр] Василий Свиридов(47/175)[досье]
А сделать .Replace("attachment; filename", String.Empty) и пообрезать всё остальное используя просто .Trim()?
спустя 17 минут [обр] Top manager(0/2)[досье]
Василий Свиридов[досье] строка может кучу всего содержать до и после.
Так что просто replace не даст нужного результата.
спустя 2 часа 5 минут [обр] Thirteensmay(10/157)[досье]
Обычными строковыми функциями найти позиции: 1 - 'filename=', 2 - ';' после 1'ой позиции, потом соответственно извлечь подстроку между этими позициями. Строчка кода ;)
спустя 7 часов [обр] Илья Cтpeльцын aka SelenIT(1/171)[досье]
"В лоб", наверное, получается что-то вроде @"filename\s*=\s*(.+?)(;|$)" (нужный фрагмент будет в .Match(input).Groups[1].Value)... Но как в HTTP-заголовки (это ж они?) попадают "левые" пробелы и странные символы?
спустя 1 час 34 минуты [обр] Top manager(0/2)[досье]

Thirteensmay[досье]непонятно

Илья Cтpeльцын aka SelenIT[досье] спа за вариант, завтра попробую
это дейтсвительно заголовки HTTP.

Просто я запарился юзать "карявые" сервисы по скачиванию файлов и отправки их на мыло. Поэтому написал свой. Очень гибкий, более быстрый и "по-возможности" максимально продуманной отказоустойчивостью.

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

спустя 2 часа 1 минуту [обр] Прокаев2(0/35)[досье]
Thirteensmay предлагает самый быстрый вариант :)
сначала выделить "f.zip;xxxx", например так
mid("xxxxxxxattachment; filename=f.zip;xxxxx",instr("attachment; filename="),len("attachment; filename="))
потом имя файла без ;
mid("f.zip;xxxx",1,instr(";")-1)
спустя 2 минуты [обр] Прокаев2(0/35)[досье]
сорри, instr не правильно использован(не писал уже года два)
но идею поняли?
спустя 8 часов [обр] Top manager(0/2)[досье]

Прокаев2[досье] да, идея понятна.

Илья Cтpeльцын aka SelenIT[досье] Ваш вариант сработал

string fileName = "attachment; filename = f.z=i|,.p;123";
            fileName = fileName == null ? "" : fileName;
            fileName = fileName.Trim();
            fileName = fileName == "" ? DateTime.Now.Ticks.ToString() : fileName;
            if (Regex.IsMatch(fileName, @"filename\s*=\s*.+?[;|$]"))
            {
                MatchCollection mc1 = GetRxGroup.get(@"filename\s*=\s*(.+?)(;|$)", fileName);
                if (mc1.Count > 0)
                {
                    MessageBox.Show("[" + mc1[0].Groups[1].ToString() + "]");
                }
            }
Powered by POEM™ Engine Copyright © 2002-2005