Einzelnen Beitrag anzeigen

PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Alle Image-Links aus HTML-String extrahieren (schnell)?

  Alt 13. Apr 2015, 08:56
Ich glaube, manchmal sind die einfachsten Lösungen oft die besten. Ich entferne einfach alle Zeilenumbrüche und wende dann einen regulären Ausdruck an, um alle Image-Links zu finden:

Delphi-Quellcode:
function RemoveChars(const S, Chars: string): string; // Chars CaseSensitive;
// http://www.delphipraxis.net/184473-schnellstes-entfernen-von-chars-aus-einem-string-4.html
var
  I, Index: integer;
  Skip: array [Char] of boolean;
begin
  FillChar(Skip[#0], Length(Skip) * SizeOf(Skip[#0]), 0);
  for I := 1 to Length(Chars) do
    Skip[Chars[I]] := true;
  SetLength(Result, Length(S));
  index := 0;
  for I := 1 to Length(S) do
    if not Skip[S[I]] then
    begin
      Inc(index);
      Result[index] := S[I];
    end;
  SetLength(Result, index);
end;

procedure TForm1.btnTestClick(Sender: TObject);
var
  S, L: string;
  ThisImageLinksRegexObj: TRegEx;
  AllImageLinks: TMatchCollection;
  I: integer;
begin
  S := TFile.ReadAllText('R:\Clipboard Text.txt');
  S := RemoveChars(S, #10#13);

  ThisImageLinksRegexObj :=
    TRegEx.Create('https?://\S+\.(png|jpg|gif|bmp|jpeg|jpe|jp2|tiff|tif)',
    [roIgnoreCase]);
  AllImageLinks := ThisImageLinksRegexObj.Matches(S);

  if AllImageLinks.Count > 0 then
  begin
    for I := 0 to AllImageLinks.Count - 1 do
    begin
      L := AllImageLinks[I].Value;
      CodeSite.Send('AllImageLinks[i]', L);
    end;
  end
  else
  begin
    CodeSite.Send('Keine Image-Links gefunden');
  end;
end;
  Mit Zitat antworten Zitat