Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Извлечь имя файла из строки URL

Delphi , Интернет и Сети , URL

Извлечь имя файла из строки URL

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

function ExtractUrlFileName(const AUrl: string): string;
  var
    i: Integer;
  begin
    i := LastDelimiter('/', AUrl);
   Result := Copy(AUrl, i + 1, Length(AUrl) - (i));
  end;

  procedure TForm1.Button1Click(Sender: TObject);
  var
    s: string;
  begin
    s := ExtractUrlFileName('http://www.delphimania.de/index.php');
    ShowMessage(s);  //index.php  
end

Here is the translation of the text into Russian:

Код, который вы предоставили, - это функция Delphi, которая извлекает имя файла из заданного URL. Функция ExtractUrlFileName принимает строковый параметр AUrl, который является URL, из которого нужно извлечь имя файла.

Вот шаг за шагом, как она работает:

  1. Она использует функцию LastDelimiter для поиска последнего вхождения символа / в URL.
  2. Затем она использует функцию Copy для извлечения подстроки, начиная с позиции после последнего вхождения символа / и до конца строки.

Результатом является имя файла, которое хранится в переменной Result, которая возвращает функция при вызове.

В процедуре Button1Click вы вызываете эту функцию с примерным URL ('http://www.delphimania.de/index.php') и отображаете результат с помощью функции ShowMessage. Вывод будет 'index.php', которое является извлеченным именем файла из URL.

Вот несколько предложений по улучшению:

  • Вместо использования жесткого кода / символ, вы могли бы сделать функцию более гибкой, позволяя пользователю указать разделитель (например, \, /, и т.д.). Вы можете это сделать, добавив дополнительный параметр к функции.
  • Функция LastDelimiter не так эффективна, как использование функции PosEx с константой cBackslash или cSlash. Это позволит вам найти последнее вхождение разделителя более быстро и точно.

Вот обновленная версия кода, которая включает эти предложения:

function ExtractUrlFileName(const AUrl, ADelimiter: string): string;
begin
  Result := Copy(AUrl, PosEx(ADelimiter, AUrl) + Length(ADelimiter), Length(AUrl) - (PosEx(ADelimiter, AUrl) + Length(ADelimiter)));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
  s := ExtractUrlFileName('http://www.delphimania.de/index.php', '/'); // index.php
  ShowMessage(s);
end;

В обновленном коде функция ExtractUrlFileName принимает дополнительный параметр ADelimiter, который указывает разделитель для извлечения имени файла. Функция использует функцию PosEx для поиска последнего вхождения разделителя и затем извлекает подстроку, как раньше.

Вы можете вызывать эту функцию с разными разделителями (например, \ для Windows путей) передавая другой значений параметра ADelimiter.

В статье описывается функция на языке Delphi, которая извлекает имя файла из строки URL, используя последний символ '/' в строке как точку отсчета.


Комментарии и вопросы


:: 2011-06-11 16:15:27 :: re:Извлечь имя файла из строки URL

пользователь: RedCAT.

Указанная выше функция будет работать далеко не во всех случаях. Например при URL типа http://example.com она возвратит example.com, хотя это совсем не имя файла. Также она не учитывает наличия параметров в URL, например, если передать ей адрес вида http://example.com/request.php?id=2&auth=0, то она возвратит не только имя файла - request.php?id=2&auth=0

Вот более полная версия функции извлекающей имя файла из URL:

function ExtractUrlFileName(const AUrl: string): string;
var
i, lastSlashPos, endOfFilename: Integer;
begin
Result := '';
lastSlashPos := 0;
endOfFilename := 0;
i := 1;
while i < = Length(AUrl) do begin
if AUrl[i] = '/' then
lastSlashPos := i;
else if AUrl[i] = '?' then begin
endOfFilename := i - 1;
Break;
end else endOfFilename := i;

if AUrl[i] = ':' then
Inc(i, 3);
else Inc(i);
end;
if lastSlashPos < endOfFilename then
Result := Copy(AUrl, lastSlashPos+1, endOfFilename - lastSlashPos);
end;


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: URL ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-19 17:53:24
2024-05-19 20:31:55/0.0070149898529053/2