🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Email-Adresse extrahieren
-
- Beiträge: 131
- Registriert: Do 25. Apr 2013, 17:27
Email-Adresse extrahieren
Hi Leute!
Ich hab schon gefunden, dass ich Perl-Code verwenden sollte für mein Anliegen...
Aber das müsste ja auch mit Starbasic gehen.
Ich hab ein Feld mit Teilnehmern. Das ist mit einer ";"-getrennten Liste (ein einziger String) gefüllt. Zwischen den Strings stehen entweder Kürzel, die ich per Skript aus einer eigenen Tabelle in Email-Adressen und Namen umwandle, und "Vorname Nachname <vorname.nachnahme@emailprovider.invalid>" oder nur email-Adressen mit Semikolon getrennt.
Mit Split sprenge ich den String in ein Array. Und aus dem Array möchte ich einerseits die Email-Adressen (so eine im Feld ist), und andererseits den Namen (so einer im Feld ist) in ein Array mit Email-Adressen und eines mit den Namen eintragen. Dazu brauch ich ein Codeschnippsel, welches mir die einzelnen Felder wieder in Namen und Email-Adresse splittet.
Hat zufällig jemand von euch so ein Codeschnippsel?
lg scientific
Ich hab schon gefunden, dass ich Perl-Code verwenden sollte für mein Anliegen...
Aber das müsste ja auch mit Starbasic gehen.
Ich hab ein Feld mit Teilnehmern. Das ist mit einer ";"-getrennten Liste (ein einziger String) gefüllt. Zwischen den Strings stehen entweder Kürzel, die ich per Skript aus einer eigenen Tabelle in Email-Adressen und Namen umwandle, und "Vorname Nachname <vorname.nachnahme@emailprovider.invalid>" oder nur email-Adressen mit Semikolon getrennt.
Mit Split sprenge ich den String in ein Array. Und aus dem Array möchte ich einerseits die Email-Adressen (so eine im Feld ist), und andererseits den Namen (so einer im Feld ist) in ein Array mit Email-Adressen und eines mit den Namen eintragen. Dazu brauch ich ein Codeschnippsel, welches mir die einzelnen Felder wieder in Namen und Email-Adresse splittet.
Hat zufällig jemand von euch so ein Codeschnippsel?
lg scientific
Re: Email-Adresse extrahieren
Hallo
Zum "Sprengen" benutzt man Sprengstoff....
Ja, auch StarBasic kennt die Runtime-funktion `split`
Zum "Sprengen" benutzt man Sprengstoff....
Ja, auch StarBasic kennt die Runtime-funktion `split`
Code: Alles auswählen
Sub Main
for each part in split("a;b;c;d", ";" )
print part
next
End Sub
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
-
- Beiträge: 131
- Registriert: Do 25. Apr 2013, 17:27
Re: Email-Adresse extrahieren
Split ist der Sprengstoff für Stringskarolus hat geschrieben:Hallo
Zum "Sprengen" benutzt man Sprengstoff....
Ja, auch StarBasic kennt die Runtime-funktion `split`
Code: Alles auswählen
Sub Main for each part in split("a;b;c;d", ";" ) print part next End Sub

Ich kenne die Funktion Split, und ich verwende sie auch, wie ich schon schrieb.
Aber ich brauche ein Codeschnippsel, welches mir aus einem String (den ich zuvor mit split aus einem größeren String geholt habe), die Email-Adresse bzw. den Namen ausspuckt.
Regular Expressions in Makros sind ja nicht so vorhanden...
lg scientific
Re: Email-Adresse extrahieren
Aha -- und woran liegts jetzt?
Tausch doch mal das zweite Argument von split ...
Tausch doch mal das zweite Argument von split ...
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Re: Email-Adresse extrahieren
dazu musst Du entweder
Für den letzteren Fall musst Du mit den "@" splitten und dann vom @ ausgehend nach "vorne" und "hinten" suchen bis zum ersten ungültigen Zeichen, und außerdem noch checken ob "hinten" auch irgendwo mindestens ein Punkt drin ist
ad REGEX:
MySQL kann das
Wenn Du ein Regex für gültige Mailadressen hast funktioniert das dann ohne Spaghetti-Basic-Code
- wissen wie die Mailadressen vom restlichen Text abgetrennt sind oder
- Du suchst ausgehend von den @
Code: Alles auswählen
sub MailExtr
dim i, sText, aText(), sMailSammlung
sText="meinLangerMailstringwoherauchimmer"
sMailSammlung=""
aText=split(sText," ")
for i =lbound(aText) to ubound(aText)
if TOOL_CheckEmailString(aText(i)) then
sMailSammlung = sMailSammlung & ";" & aText(i)
end if
next i
if sMailSammlung <> "" then
msgbox cstr(ubound(split(sMailSammlung,";")) +1 ) & "Mails in diesem String: " & sMailSammlung
else
msgbox "Nix gefunden!"
end if
end sub
Code: Alles auswählen
Function TOOL_CheckEmailString(sEmail)
TOOL_CheckEmailString = false
dim a()
a()=split(sEmail,"@")
if ubound(a) <> 1 then exit function
a()=split(a(1),".")
if ubound(a) < 1 then exit function
if len(a(ubound(a))) < 2 then exit function
if instr(1,sEmail," ",1) then exit function
if instr(1,sEmail,"(",1) then exit function
if instr(1,sEmail,")",1) then exit function
if instr(1,sEmail,"<",1) then exit function
if instr(1,sEmail,">",1) then exit function
if instr(1,sEmail,",",1) then exit function
if instr(1,sEmail,";",1) then exit function
if instr(1,sEmail,":",1) then exit function
if instr(1,sEmail,"\",1) then exit function
if instr(1,sEmail,"[",1) then exit function
if instr(1,sEmail,"]",1) then exit function
if instr(1,sEmail,"/",1) then exit function
if instr(1,sEmail,chr(10),1) then exit function
if instr(1,sEmail,chr(13),1) then exit function
if instr(1,sEmail,chr(34),1) then exit function
if instr(1,sEmail,chr(39),1) then exit function
' Testet auf : ( ) < > @ , ; : \ " . [ ]
TOOL_CheckEmailString = true
END FUNCTION
ad REGEX:
MySQL kann das
Code: Alles auswählen
select 'ich@da.de' regexp '@';
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
-
- Beiträge: 131
- Registriert: Do 25. Apr 2013, 17:27
Re: Email-Adresse extrahieren
Vielen Dank für den Input!
Ich habs jetzt so gelöst, dass ich mit split die einzelnen Adressaten noch einmal in die Bestandteile auflöse. Dann diese Bestandteile in einer Schleife durchlaufen lasse. Ist ein "@" enthalten, so ist es die Email-Adresse, ist keines enthalten, werden diese Teile wieder zu einem ganzen zusammengefügt und sind dann der Name. Die Namensbestandteile werden in der Reihenfolge zusammengesetzt, wie sie auch im Original sind. Steht dort also Mist, ergibt das auch Mist.
lg sicentific
Ich habs jetzt so gelöst, dass ich mit split die einzelnen Adressaten noch einmal in die Bestandteile auflöse. Dann diese Bestandteile in einer Schleife durchlaufen lasse. Ist ein "@" enthalten, so ist es die Email-Adresse, ist keines enthalten, werden diese Teile wieder zu einem ganzen zusammengefügt und sind dann der Name. Die Namensbestandteile werden in der Reihenfolge zusammengesetzt, wie sie auch im Original sind. Steht dort also Mist, ergibt das auch Mist.
lg sicentific
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.