Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi eMailadresse aus String filtern (https://www.delphipraxis.net/50540-emailadresse-aus-string-filtern.html)

emsländer 27. Jul 2005 12:29


eMailadresse aus String filtern
 
Moin,

ich habe einen String in der Form: Vorname Nachname, Anschrift ...bla .. email@adresse.de blubber


Ich benötige aus diesem Kauderwelsch die Mailaddi

Hat da jemand einen Tip`?

Danke

Gruss

EL

Sharky 27. Jul 2005 12:37

Re: eMailadresse aus String filtern
 
Hai EL,

das einfachste wäre wohl Du ermittelst die Position des @ und gehst dann nach links bzw. rechts bis Du auf ein Zeichen triffst welches in einer eMail-Adresse nicht mehr zulässig ist.

emsländer 27. Jul 2005 12:38

Re: eMailadresse aus String filtern
 
Zitat:

Zitat von Sharky
Hai EL,

das einfachste wäre wohl Du ermittelst die Position des @ und gehst dann nach links bzw. rechts bis Du auf ein Zeichen triffst welches in einer eMail-Adresse nicht mehr zulässig ist.

Davor und dahinter ist jeweils ein Leerzeichen.

Hast Du für mich da evtl. ein Codeschnipsel?

Gruss

EL

BenjaminH 27. Jul 2005 12:39

Re: eMailadresse aus String filtern
 
Oder du zerlegst den Text mit ExplodeExplode bei den Leerzeichen
und suchst in den einzelnen teilen nach @, das braucht aber sicher länger als Sharkys lösung...

Sharky 27. Jul 2005 12:58

Re: eMailadresse aus String filtern
 
Hai,

das habe ich mal so schnell hingetippelt.
Delphi-Quellcode:
function ExtractiMehl (aValue : string) : string;
var
  at : integer;
  start : integer;
  stop : integer;
  permittedChar : SET of Char;
begin
  permittedChar := ['a'..'z','.','_','-'];
  aValue := AnsiLowerCase(aValue);
  at := Pos('@',aValue);
  start := at-1;
  while (aValue[start] in permittedChar) and (start > 0) do
  begin
    Dec (start)
  end;
  stop := at+1;
  while (aValue[stop] in permittedChar) and (stop < length(aValue)) do
  begin
    Inc (stop)
  end;
  result := Copy (aValue,start,(stop-start));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Label1.Caption := ExtractiMehl(Edit1.Text)
end;

emsländer 27. Jul 2005 13:21

Re: eMailadresse aus String filtern
 
Zitat:

Zitat von Sharky
Hai,

das habe ich mal so schnell hingetippelt.
Delphi-Quellcode:
function ExtractiMehl (aValue : string) : string;
var
  at : integer;
  start : integer;
  stop : integer;
  permittedChar : SET of Char;
begin
  permittedChar := ['a'..'z','.','_','-'];
  aValue := AnsiLowerCase(aValue);
  at := Pos('@',aValue);
  start := at-1;
  while (aValue[start] in permittedChar) and (start > 0) do
  begin
    Dec (start)
  end;
  stop := at+1;
  while (aValue[stop] in permittedChar) and (stop < length(aValue)) do
  begin
    Inc (stop)
  end;
  result := Copy (aValue,start,(stop-start));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Label1.Caption := ExtractiMehl(Edit1.Text)
end;

He Sharky,

klappt !!!!

vielen lieben Dank!

Gruss

EL

Sandi007 21. Jul 2012 15:32

AW: eMailadresse aus String filtern
 
jetzt wird nur noch eine Lösung für solche Fälle benötigt:

"Alle schreiben an musterman@mail.de. Der Text soll..."
"Alle schreiben an musterman@mail.de... Der Text soll..."
"Alle schreiben an musterman@mail.de, der Text soll..."

Grüße aus dem Land der Sonderfälle :shock:

jfheins 21. Jul 2012 15:45

AW: eMailadresse aus String filtern
 
Hallo Sandi007,
Fall 1 funktioniert ohne Probleme. Es gibt einen virtuellen Keks, wenn du mir sagen kannst, warum :mrgreen:
Die anderen beiden Fälle lassen sich erledigen, wenn du am Ende Zeichen löschst, die keine Buchstaben sind.

Wobei der Code natürlich der Aufgabenstellung gerecht wird:
Zitat:

Davor und dahinter ist jeweils ein Leerzeichen.
P.S.: Der Thread ist 7 Jahre alt, ich hoffe das war dir bewusst. Falls du ein eigenes Problem haben solltest, mache bitte einen neuen Thread auf ;-)

omata 21. Jul 2012 23:44

AW: eMailadresse aus String filtern
 
@Sandi007: Verwende Reguläre Ausdrücke für solche Aufgabenstellungen.

Komponente siehe z.B. hier.

Valle 22. Jul 2012 02:09

AW: eMailadresse aus String filtern
 
Oder du verwendest den obigen Code weiter und wendest anschließend eine Funktion wie rtrim an.

Die kann man auch leicht selbt machen, mit einer einfachen Schleife, falls du sie für Delphi nicht findest. (Solange letztes Zeichen Punkt oder Komma ist, entferne das letzte Zeichen)

Falls du es doch mit einer RegExp machen solltest, denke bitte daran, dass es auch andere Endungen als .de und .com gibt. Es gibt auch TopLevel-Domains, die länger als 4 Buchstaben sind. Und auch eine Domain ohne einen Punkt kann eine gültige Domain sein. Leider gibt es immer noch viel Software, die es da zu genau nimmt und verschiedene, völlig legale E-Mail-Adressen als inkorrekt erkennt...

Liebe Grüße,
Valentin


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz