Avatar billede df_n Nybegynder
11. maj 2003 - 17:16 Der er 5 kommentarer

Finde email adresse i streng

Hvordan kan jeg finde en email adresse i en String.

Jeg har bruge for at kunne finde email adresser i en streng som kunne se således ud: Hejsa<email@adresse.dk>Noget mere text...

da der ikke er mellemrum kan jeg ikke hente email adressen uden at få hele strengen med så den kommer til at se således ud:

<a href=Hejsa<email@adresse.dk>Noget>mail</a> mere text...

når jeg bruger indexOf("@")
og en StringTokenizer(string," ");

nogen forslag ?
Avatar billede arne_v Ekspert
11. maj 2003 - 17:23 #1
Prøv med StrinkTokenizer og indexOf ligesom:

import java.util.StringTokenizer;

public class Parse {

    public static void main(String[] args) {
        String s= "<a href=Hejsa<email@adresse.dk>Noget>mail</a> mere text...";
        StringTokenizer st = new StringTokenizer(s, "<>");
        while(st.hasMoreElements()) {
            String part = (String)st.nextElement();
            if(part.indexOf('@')>=0) {
                System.out.println(part);
            }
        }
    }
}
Avatar billede arne_v Ekspert
11. maj 2003 - 17:24 #2
Det forudsætter naturligvis at strengen er som i dit eksempel.
Avatar billede arne_v Ekspert
11. maj 2003 - 17:33 #3
Hm.

Måske er det snarere følgende variant du leder efter:

import java.util.StringTokenizer;

public class Parse {

    public static void main(String[] args) {
        String s= "Hejsa<email@adresse.dk>Noget mere text...";
        StringTokenizer st = new StringTokenizer(s, "<>");
        while(st.hasMoreElements()) {
            String part = (String)st.nextElement();
            if(part.indexOf('@')>=0) {
                System.out.println("<A HREF='mailto:" + part + "'>");
            }
        }
    }
}
Avatar billede elv Nybegynder
11. maj 2003 - 20:58 #4
Fik lige lyst til at lege lidt med nogle regular expressions.... (kræver jdk 1.4)

public class Main
{
    public static void main(String[] args)
    {
        // Input:
        String input = "Hejsa<email@adresse.dk;>WREOUF.wasup@192.168.1.6Noget mere text...";
        // Pattern til validation af email, kilde: www.regexlib.com
        String pattern =
            "([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)";

        // Hent resultatet:
        ArrayList result = split(input, pattern);
        // Vis resultatet:
        Iterator i = result.iterator();
        while (i.hasNext())
        {
            System.out.println(i.next());
        }
    }

    // Funktion lavet til at hente strings der matcher patterns ud fra input
    public static ArrayList split(String input, String pattern)
    {
        ArrayList result = new ArrayList();
        // Lav Pattern og Matcher:
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(input);
        // Find alle resultater:
        while (m.find())
        {
            result.add(m.group());
        }
        return result;
    }
}
Avatar billede elv Nybegynder
11. maj 2003 - 20:59 #5
glemte lige...
import java.util.regex.*;
import java.util.*;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester