2012-05-13 10 views

cevap

4

, ben InternetAddress sınıfını kullanmak tavsiye ederim. Java EE'nin bir parçasıdır (Java SE kullanıyorsanız, javax.mail bağımlılığını eklemeniz gerekir).

Bu sınıf sizinki gibi bir e-posta adresi içeren bir Dizeyi ayrıştırabilir.

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

bu şekilde düşünüyorum:

  • Kişisel algoritma otomatik olarak standartlara uyumlu
  • Kodunuz e-posta adresini ayıklamak için normal ifadeler kullanarak daha temiz.
+0

Teşekkürler! Basit ve temiz – Akshay

2

Aşağıdaki şeyi yapabilirsiniz. Eğer e-posta adreslerini ayrıştırmak çalışıyorsanız

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); 
    } 
İlgili konular