2012-05-13 4 views
5

मेरे पास जावा में एक स्ट्रिंग है जिसे Kiran<[email protected]> कहा जाता है। मैं अन्य सामग्री को हटाकर स्ट्रिंग सिर्फ [email protected] प्राप्त करना चाहता हूं।विशिष्ट श्रेणी (ईमेल प्रारूप) के साथ जावा में एक स्ट्रिंग को फ़िल्टर करने के लिए कैसे करें

String s1= kiran<[email protected]> 

आउटपुट होना चाहिए [email protected]

कृपया मुझे इस को हल करने में मदद करते हैं।

उत्तर

4

आप ईमेल पते पार्स करने के लिए कोशिश कर रहे हैं, मैं InternetAddress वर्ग का उपयोग करने की सलाह देते हैं। यह जावा ईई का हिस्सा है (यदि आप जावा एसई का उपयोग कर रहे हैं तो आपको javax.mail निर्भरता जोड़ने की आवश्यकता है)।

वह कक्षा आपके जैसे ईमेल पते वाले स्ट्रिंग को पार्स करने में सक्षम है।

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

मैं इस तरह से लगता है:

  • आपका एल्गोरिथम का है मानकों का अनुपालन करने
  • आपका कोड ईमेल पता निकालने के लिए नियमित अभिव्यक्ति का उपयोग करने से क्लीनर है।
+0

धन्यवाद !! सरल और साफ – Akshay

2

आप निम्न चीज़ें कर सकते हैं।

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); 
    } 
संबंधित मुद्दे

 संबंधित मुद्दे