2012-05-13 5 views

risposta

4

Se si sta tentando di analizzare indirizzi e-mail, mi consiglia di utilizzare la classe InternetAddress. Fa parte di Java EE (se si utilizza Java SE è necessario aggiungere la dipendenza javax.mail).

Quella classe è in grado di analizzare una stringa contenente un indirizzo email come il tuo.

String s1 = "kiran<[email protected]>"; 
InternetAddress address = new InternetAddress(s1); 
String email = address.getAddress(); 

penso in questo modo:

  • vostro algoritmo è automaticamente conforme agli standard
  • Il codice è più pulito rispetto all'utilizzo di espressioni regolari per estrarre l'indirizzo di posta elettronica.
+0

Grazie !! Semplice e pulito – Akshay

2

È possibile effettuare le seguenti operazioni.

String s = "To: John Smith <[email protected]>, Janes Smith\n" 
      + "<[email protected]>, Tom Barter <[email protected]>, Other \n" 
      + "Weird @#[email protected]<>#^Names <[email protected]>, \n" 
      + "Long Long Long Long Name <[email protected]>"; 
    s = s.substring(3); // filter TO: 
    System.out.println(s); 
    // Use DOTALL pattern 
    Pattern p = Pattern.compile("(.*?)<([^>]+)>\\s*,?",Pattern.DOTALL); 

    Matcher m = p.matcher(s); 

    while(m.find()) { 
     // filter newline 
     String name = m.group(1).replaceAll("[\\n\\r]+", ""); 
     String email = m.group(2).replaceAll("[\\n\\r]+", ""); 
     System.out.println(name + " -> " + email); 
    } 
Problemi correlati