• 16 odgovora
  • 7.972 pregleda
Nalazenje eMail adrese u stringu 23.07.2006. u 23:24 · pre 246 meseci #1
Kako pomocu c# da iz stringa (koji sadrzi neki tekst u kojem se nalazi izmedju ostalog i eMail adresa ) "izvadim" eMail adresu i smestim je u neku promenljivu.?
npr.
string sPocetni="bla, bla, bla... [email protected] bla bla bla..."; //pocetni string
string sIzvadjenaAdresa="[email protected]"; //zeljeni rezultat
Re: Nalazenje eMail adrese u stringu 24.07.2006. u 02:11 · pre 246 meseci #3
Naravno, pravilo je da levo od @ znaka mogu biti bilo koji karakter, a desno mora da ima bar jednu tačku i da posle te tačke ima nešto (.com, .org itd)
Potpis
Winners never quit, quitters never win.
Re: Nalazenje eMail adrese u stringu 24.07.2006. u 02:34 · pre 246 meseci #4
MA briga ga za tacku. dodje do @ pa se vrati do prvog belog, pa racuna da je adresa od tog slova do sledeceg prvog belog...
Potpis
De si Deda...
Re: Nalazenje eMail adrese u stringu 24.07.2006. u 08:45 · pre 246 meseci #5
Najlakše je da koristiš Regular Expressions...

Code:

            // Define a regular expression for repeated words.
            Regex rx = new Regex(@"\w+@\w+.\w+",
              RegexOptions.Compiled | RegexOptions.IgnoreCase);

            // Define a test string.        
            string text = TvojUlazniString;

            // Find matches.
            MatchCollection matches = rx.Matches(text);

            // Report on each match.
            foreach (Match match in matches)
            {
                string emailAdresa = match.Value;
            }
Potpis
Oliver 'FAQ' Klaćik
Re: Nalazenje eMail adrese u stringu 25.07.2006. u 01:59 · pre 246 meseci #6
Uspeo sam radi mi onako kako je rekao Oliver Klacik, hvala vam puno.
Samo treba da se koristi "using System.Text.RegularExpressions;"
radi i za stringove gde nije ispred i iza adrese razmak, npr. <a href="mailto:[email protected]">anfragen</a>
Re: Nalazenje eMail adrese u stringu 25.07.2006. u 10:17 · pre 246 meseci #8
Buduci da u e-mail adresi, tj u korisnickom imenu moze da bude tacka (.) modifikovao bih
Code:

 Regex rx = new Regex(@"\w+@\w+.\w+", RegexOptions.Compiled | RegexOptions.IgnoreCase);


u

Code:

 Regex rx = new Regex(@"[A-Za-z0-9_.]+@\w+.\w+", RegexOptions.Compiled | RegexOptions.IgnoreCase);



Mada nije ni ovo konacno rjesenje jer neko ima adresu recimo [email protected] tj postoje 2 tacke u imenenu domena.
Ja sam nov sa regexp-ima pa mi treba vishe treninga i vjezbe da skontam, kad skontam napisacu :)
Potpis
:: Nemoj se svadjati sa budalom, ljudi cesto nece primjetiti razliku ::
Re: Nalazenje eMail adrese u stringu 25.07.2006. u 10:38 · pre 246 meseci #9
Mislim da je ovo dobitna kombinacija

Code:
"[A-z0-9_.-]+@[A-z0-9_.-]+[A-z]{2,4}"


Potpis
:: Nemoj se svadjati sa budalom, ljudi cesto nece primjetiti razliku ::
Re: Nalazenje eMail adrese u stringu 25.07.2006. u 12:24 · pre 246 meseci #10
Citat:
misk0: Mislim da je ovo dobitna kombinacija
Code:
"[A-z0-9_.-]+@[A-z0-9_.-]+[A-z]{2,4}"

Nope, pronaci ce npr adresu [email protected] sto nije validna email adresa, dalje postoje root domeni sa vise od 4 karaktera (.museum, npr). Dalje, \w moze da ti menja [A-Za-z0-9_] a i account adrese moze da sadrzi %

Ovo je malo ispravnije resenje:

Code:

[\w.%-]+@([\w-]+\.)+[\w]{2,6}


Naravno, ni ovo resenje nije potpuno, u attachmentu imas regular expression koji je 100% kompatibilan sa RFC standardom za email adresu, ali naravno niko normalan to ne bi koristio (a i verovatno bi bilo uzasno sporo, nisam probao ). Ko sto rece moj nekadasnji profa, regex je uvek kompromis izmedju egzaktnosti i prakticnosti

Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Nalazenje eMail adrese u stringu 25.07.2006. u 12:49 · pre 246 meseci #11
Da, ja sam skratio izraz misleci da cu ga napraviti jednostavniji a zaboravio sam taj dio sa ..
Ovaj RFC compatibile je ql, ali nema sanse da skontam sta pishe tamo.
Potpis
:: Nemoj se svadjati sa budalom, ljudi cesto nece primjetiti razliku ::
Re: Nalazenje eMail adrese u stringu 30.07.2006. u 01:59 · pre 246 meseci #14
@mmix

Ovo sto si napisao:

Code:

[\w.%-]+@([\w-]+\.)+[\w]{2,6}


Nije dobro resenje kako sto si i sam rekao...

Po tome [email protected] je EMAIL :)


@CtrlAltDel

Sve mi se cini da je tvoj RegExp malo neispravan :)



Recimo evo sta meni pada napamet:

Code:

' neka Funkcija koja ce da vrati emial adresu
' mada ni ovo nije neko 100 % resenje ali moze lako da se izvede....

    Public Function VratiEmail(ByVal str As String) As String
        str = Regex.Replace(str, "[^\w\.@-_]", " ")
        Dim EmailArray() As String = Split(str)
        Dim LastNonEmpty As Integer = -1
        For i As Integer = 0 To EmailArray.Length - 1
            If EmailArray(i) <> "" And (InStr(EmailArray(i), "@") And InStr(EmailArray(i), ".")) Then
                LastNonEmpty += 1
                EmailArray(LastNonEmpty) = EmailArray(i)
            End If
        Next
        Return EmailArray(LastNonEmpty)
    End Function




Znaci imamo ovako nesto:

Code:


        Dim str As String = "dddd ddddd dddd [email protected] >[email protected]/> sasasas sas@dfs fdf"

        'Treba da vrati [email protected]
        MsgBox(VratiEmail(str))

'Jedini problem je ako se nadje jos jedan email ili kombinacija stringa gde ima @ i .




Mada funkcija moze da se napravi da vrati sve tako reci email adrese a kasnije se proveri ispravnost te email adrese :)


Poz
sale
Potpis
Sto mozes danas ne ostavljaj za sutra!
Re: Nalazenje eMail adrese u stringu 30.07.2006. u 12:57 · pre 246 meseci #15
hm, ja ovo koristim u php funkciji za proveru unosa mail-a...

u stvari jes malo neispravan , propusta jednu gresku...
Re: Nalazenje eMail adrese u stringu 30.07.2006. u 14:21 · pre 246 meseci #16
Citat:
CtrlAltDel: hm, ja ovo koristim u php funkciji za proveru unosa mail-a...
u stvari jes malo neispravan , propusta jednu gresku...


Pitanje je bilo kako izvuci ispravan e-mail iz texta, a ne 'da li je upisan string e-mail'. Tvoj Regexp ima ^ i $ sto su pocetak i kraj stringa, znaci ne mozes mu servirati citav text a da on odatle izvuce string.
Potpis
:: Nemoj se svadjati sa budalom, ljudi cesto nece primjetiti razliku ::
Re: Nalazenje eMail adrese u stringu 30.07.2006. u 14:34 · pre 246 meseci #17
Citat:
sale83: @mmix

Ovo sto si napisao:

Code:

[\w.%-]+@([\w-]+\.)+[\w]{2,6}


Nije dobro resenje kako sto si i sam rekao...

Po tome [email protected] je EMAIL :)


Iako nisam koristio VB iskompajlirao sam tvoj kod i njemu prolazi isti e-mail. Znaci da bi imao sigurno ispravan email, morao bi osim toga da ga izolujes kao string, da provjeris da li domen postoji i da provjeris da li username postoji. To iskljucuje regexp-e iz dalje priche.
Mislim da je ovde bilo bitnije izvuci ispravnu e-mail sintaksu sto prethodni regexp radi.

Potpis
:: Nemoj se svadjati sa budalom, ljudi cesto nece primjetiti razliku ::
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme