2012-08-03 10 views
7

मैं वर्तमान में निम्नलिखित कोड है:सी # परिवर्तित डोमेन उपयोगकर्ता

string user = @"DOMAIN\USER"; 
string[] parts = user.Split(new string[] { "\\" }, StringSplitOptions.None); 
string user = parts[1] + "@" + parts[0]; 

इनपुट स्ट्रिंग user दो स्वरूपों में से एक में हो सकता है:

DOMAIN\USER 
DOMAIN\\USER (with a double slash) 

क्या में सबसे खूबसूरत तरीका सी # इन स्ट्रिंग्स में से किसी एक को कनवर्ट करने के लिए:

[email protected] 
+1

आप इसे एक Regex के साथ कर सकता। मैं किसी और को उस regex को बनाने के लिए छोड़ दूंगा :) – podiluska

उत्तर

7

सुनिश्चित नहीं है कि आप इसे सबसे अधिक सुरुचिपूर्ण कहेंगे:

string[] parts = user.Split(new string[] {"/"}, 
          StringSplitOptions.RemoveEmptyEntries); 
string user = string.Format("{0}@{1}", parts[1], parts[0]); 
+0

+1 - बस 'RemoveEmptyEntries' –

+0

@Oded जोड़ा गया "//" आपके सरणी –

+1

@MAfifi - आवश्यक नहीं है,' RemoveEmptyEntries' 'के साथ नहीं। कोशिश करो। – Oded

2

कैसे इस बारे में:

 string user = @"DOMAIN//USER"; 
     Regex pattern = new Regex("[/]+"); 
     var sp = pattern.Split(user); 
     user = sp[1] + "@" + sp[0]; 
     Console.WriteLine(user); 
+0

यह डबल-स्लैश के मामले को सही तरीके से संभाल नहीं करता है। – vcsjones

+2

@vcsjones हाँ, यह करता है! – Mithrandir

+0

एघ, जो मुझे सोचने से सिखाएगा मैं थोड़ी देर के लिए regexes समझता हूँ। +1 – vcsjones

2

Oded के जवाब पर एक बदलाव का उपयोग कर सकते Array.Reverse:

string[] parts = user.Split(new string[] {"/"},StringSplitOptions.RemoveEmptyEntries); 
Array.Reverse(parts); 
return String.Join("@",parts); 

वैकल्पिक रूप से, (here के आधार पर) LINQ इस्तेमाल कर सकते हैं:

return user.Split(new string[] {"/"}, StringSplitOptions.RemoveEmptyEntries) 
     .Aggregate((current, next) => next + "@" + current); 
0

आप इस कोशिश कर सकते हैं: एक और विकल्प जोड़ने की खातिर

String[] parts = user.Split(new String[] {@"\", @"\\"}, StringSplitOptions.RemoveEmptyEntries); 
user = String.Format("{0}@{1}", parts[1], parts[0]); 
0

, यहाँ यह है:

string user = @"DOMAIN//USER"; 
string result = user.Substring(0, user.IndexOf("/")) + "@" + user.Substring(user.LastIndexOf("/") + 1, user.Length - (user.LastIndexOf("/") + 1)); 
संबंधित मुद्दे