2012-08-03 19 views
7

Actualmente tengo el siguiente código:C# convertido dominio usuario a usuario @ dominio

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

Cadena de entrada user puede estar en uno de dos formatos:

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

¿Cuál es la forma más elegante de C# para convertir cualquiera de estas cadenas para:

[email protected] 
+1

que podría hacerlo con una expresión regular. Dejaré que alguien más construya esa expresión regular :) – podiluska

Respuesta

7
No

seguro de que llamar a esto más elegante:

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

+1 - estaba a punto de sugerir 'RemoveEmptyEntries' –

+0

@Oded agrega" // "a tu matriz –

+1

@MAfifi - No es necesario, no con' RemoveEmptyEntries'. Intentalo. – Oded

2

¿Qué tal esto:

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

Esto no maneja correctamente el caso de la doble barra. – vcsjones

+2

@vcsjones Sí, lo hace! – Mithrandir

+0

Agh, eso me enseñará a pensar que entiendo las expresiones regulares por un tiempo. +1 – vcsjones

2

Una variación en la respuesta de Oded podría utilizar Array.Reverse:

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

Alternativamente, podría utilizar LINQ (basado en la here):

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

Usted puede intentar esto:

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

Por el bien de añadir otra opción, aquí está:

string user = @"DOMAIN//USER"; 
string result = user.Substring(0, user.IndexOf("/")) + "@" + user.Substring(user.LastIndexOf("/") + 1, user.Length - (user.LastIndexOf("/") + 1)); 
Cuestiones relacionadas