2010-12-14 14 views
24

में सादे ईमेल पता पार्स मैं कैसे की एक ईमेल पते से उपयोगकर्ता नाम और डोमेन मिलता है:2 भागों

string email = "[email protected]"; 
//Should parse into: 
string username = "hello"; 
string domain = "example.com"; 

मैं इस जरूरी कुशल नहीं करना है, कम से कम कोड की मांग कर रहा हूँ।


परिदृश्य: मैं इसे अपने एएसपी.नेट एमवीसी व्यू में पार्स करना चाहता हूं ताकि मैं इसे क्लोक कर सकूं।

+1

ईमेल। स्प्लिट ('@') [0] और ईमेल। स्प्लिट ('@') [1] – Aliostad

+0

ब्रायन बॉन्डी के समाधान का उपयोग करें। कुछ भी जो 'string.Split' का उपयोग करता है, कई मामलों में विफल होने जा रहा है। अब अनिवार्य (और निराशाजनक गलत) regex समाधान कहां है? –

+3

@Jim:/हैलो/और /site\.com/ –

उत्तर

81

उपयोग MailAddress वर्ग

MailAddress addr = new MailAddress("[email protected]"); 
string username = addr.User; 
string domain = addr.Host; 

इस विधि इस तरह भी पार्स करने स्थितियों (और अन्य आप उम्मीद नहीं की जा सकती है) को लाभ मिलता है:

MailAddress addr = new MailAddress("\"Mr. Hello\" <[email protected]>"); 
string username = addr.User; 
string host = addr.Host; 

उपरोक्त दोनों मामलों में:

Debug.Assert(username.Equals("hello")); 
Debug.Assert(host.Equals("site.com")); 

अपने निर्देशों का उपयोग कर के आराम के साथ अपने फ़ाइल के शीर्ष पर जोड़ें: इस

using System.Net.Mail; 
+0

छोटा नोट: मेल एड्रेस विंडोज स्टोर ऐप पर उपलब्ध नहीं है। –

12
String[] parts = "[email protected]".Split(new[]{ '@' }); 
String username = parts[0]; // "hello" 
String domain = parts[1]; // "example.com" 
+0

-1 किसी भी लापता अर्धविराम के लिए –

+9

संकलित भी नहीं करता है? संकलन त्रुटि को थोड़ा गंभीरता से लेना, है ना? –

+0

अभी भी संकलित नहीं करता है ... –

6
string username = email.Split('@')[0]; 
string domain = email.Split('@')[1]; 
+2

इवेंट हालांकि यह अच्छी तरह से विचार को प्रदर्शित करता है, यह एक खराब उदाहरण सेट करता है। 'स्प्लिट' को दो बार कॉल करना अक्षम है और भविष्य में अधिक रखरखाव की आवश्यकता होती है जब चीजें बदलती हैं। – detunized

+2

"मैं ऐसा करने के लिए सबसे छोटा कोड चाहता हूं, जरूरी नहीं कि कुशल।" :) – hunter

+2

ठीक है, यही कारण है कि हमें हर एक या दो वर्षों में अपने कंप्यूटर को अपग्रेड करना पड़ता है। – detunized

1
int i = email.IndexOf('@'); 
if (i >= 0) 
{ 
    username = email.Substring(0, i); 
    domain = email.Substring(i + 1); 
} 
1

उपयोग यह जब कोई डोमेन या उपयोगकर्ता नाम के बजाय पाया यह है कि के लिए शून्य मान दे देंगे अपवाद नहीं देंगे ,

सी #:

string email = "[email protected]"; 

string username = email.Split('@').ElementAtOrDefault(0); 
string domain = email.Split('@').ElementAtOrDefault(1); 

वीबी:

Dim email as String = "[email protected]"; 
Dim username = email.Split("@".ToCharArray()).ElementAtOrDefault(0); 
Dim domain = email.Split("@".ToCharArray()).ElementAtOrDefault(1); 
संबंधित मुद्दे