![]() |
mailto: herausfiltern
hallo ich muss folgenden string (kommt öfters vor)
Code:
aus einer html-datei herausfiltern weil ich diese austauschen muss.
[email="name@domain.de"]name@domain.de[/email]
das will mir mit dem code unter aber nicht ganz glücken, schwierigkeiten machen irgendwelche tags z.b.
Code:
die am ende dranhängen und die ich einfach nicht rausgefiltert kriege.
usw....
nein, ich will mir keinen spider bauen ;)
Delphi-Quellcode:
for i := 0 to Memo4.Lines.Count - 1 do
begin if Pos('<a href="mailto:', Memo4.Lines.Strings[i]) > 0 then begin s := ''; for p := Pos('<a href="mailto:', Memo4.Lines.Strings[i]) to Length(Memo4.Lines.Strings[i]) do if Memo4.Lines.Strings[i][p] <> '</a>' then s := s + Memo4.Lines.Strings[i][p] else break; // while Pos(s[Length(s)], '..;!")]}?''><`´/' + '</br>' + '</p>' + '</a>' + ('a..z')) > 0 do // Delete(s, Length(s), 1); Memo5.lines.Add(s); end; end; end; |
Code:
Wenn ich das richtig sehe, vergleichst du ein Char mit einem String.
if Memo4.Lines.Strings[i][p] <> '</a>' then
Der Char an Stelle p des Strings kann ja nie '</a>' sein, weil das schon 4 Chars sind. Also läuft die Schleife immer bis zum Ende des Strings und liest weiter die Zeichen ein. |
klingt logisch...nur habe ich keine ahnung wie ich das ändern kann, du?
|
Moin Aaron,
und was hältst Du von dieser Lösung:
Delphi-Quellcode:
:?:
Memo1.Text := StringReplace(Memo1.Text,'OldAccout@domain.de','NewAccount@domain.de',[rfReplaceAll,rfIgnoreCase]);
|
ja...gute idee ;)
|
Moin Aaron,
dabei fällt mir ein: Solltest Du das in einer Schleife machen wollen, weil Du eine Liste verschiedener alter und neuer Werte abarbeiten musst je Datei, solltest Du Memo.Text zu Beginn in eine Stringvariable übertragen, damit arbeiten und dann am Schluss erst wieder Memo.Text setzen. Ansonsten geht das (u.U. ganz erheblich) auf die Performance. |
ok, habe aber noch eine andere frage dazu,
falls diese nun nicht mehr hierhin gehört verschiebe sie bitte. im memo6 stehen nun untereinander ein paar mailadressen ich möchte sie umwandeln mit Ord und zeilenweise in eine listbox übergeben. so wie ich es jetzt habe nimmt der immer alle zeilen des memos und packt die zeile für zeile in die listbox, was mache ich falsch?
Delphi-Quellcode:
denke es liegt daran:
var
i: integer; s1, s2: string; begin s1 := Memo6.Text; s2 := '&#'; for i := 1 to Length(s1) do s2 := s2 + Format('%d', [Ord(s1[i])]) + ';&#'; for i := ListBox1.items.count - 1 downto 0 do Listbox1.Items.add(s2);
Delphi-Quellcode:
kriegs nicht hin
s1 := Memo6.Text;
|
Willst du den String ersetzen? Ich hatte es so verstanden, dass du verschiedene verlinkte E-Mails aus nem HTML-Text herausfiltern willst. Prinzipiell würde das mit deinem Quelltext ja auch schon gehen, wenn du statt bis zu '</a>' bis zum '"' laufen würdest, oder? Anführungszeichen dürften ja normalerweise auch kein bestandteil eine E-Mail Adresse sein.
Sollte ich jetzt Blödsinn schreiben, schieb ichs auf die Uhrzeit. :roll: |
danke, gehört zwar dazu ist aber jetzt ein anderer bereich, äh...ja
ich weiß auch nicht genau ob das jetzt noch hierhin gehört :chat: |
Moin Aaron,
Zitat:
Eröffne doch bitte für die neue Frage auch einen neuen Thread. Danke. PS: Mir würde jetzt auch kein Titel einfallen :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz