2011-11-28 11 views
5

¿Hay alguna manera de cambiar "ABCDEFGHIJKLMNOP" a "ABCD-EFGH-IJKL-MNOP" utilizando la función string.format() o tal vez LINQ?
estoy usando esta declaración¿Cuál es la mejor manera de separar cadenas utilizando la función string.format() o LINQ?

Out= String.Format("{0}-{1}", String.Format("{0}-{1}-{2}", In.Substring(0, 4), In.Substring(4, 4), In.Substring(8, 4)), In.Substring(12, 4)); 

hay una manera mejor y más clara de lograr esto?

+0

problema con su variante es que si la cadena es menor que 16 caracteres, el programa va a morir !! ** ** –

Respuesta

10

Usted podía uso string.Format, pero todavía tendría que utilizar SubString para obtener las diferentes partes.

Usted debe probablemente sólo utiliza Insert:

string result = myString.Insert(12, "-").Insert(8, "-").Insert(4, "-"); 

LINQ es excesivo para algo como esto.

9

Esto es muy fácil de hacer sin LINQ o string.format, por lo que se recomienda usar este código en su lugar:

string s = "ABCDEFGHIJKLMNOP"; 
for(int i = 4; i < s.Length; i += 5){ 
    s = s.Insert(i, "-"); 
} 

Esto insertará un guión después de cada 4 caracteres (i asumido que es lo que quería)

3

Sólo por diversión, en LINQ:

string result = input.Select((c, i) => i > 0 && i % 4 == 0 ? "-" + c : c.ToString()) 
       .Aggregate((s1, s2) => s1 + s2); 

Por supuesto, no sería recomendar el uso de LINQ en este caso, como una solución 'clásica' sería más eficiente y más fácil de leer.

Aún así, me gustaba escribir éste: D

+0

realmente desagradable ... y la diversión;) –

+0

Ja ja: ¡buen 1! Yo también intenté algo como esto. Pero no funcionó – Niranjan

+0

Funciona como se esperaba, pero es un problema (como KooKiz también sabe incluso si publicó esta solución), para una persona que no sabe lo que hace este código es muy difícil de leer y ver lo que hace. No veo por qué quieres usar LINQ para esto solo porque es nuevo y brillante. Me encanta ** LINQ, pero no lo forzo donde es simplemente más simple y mucho más legible usar un viejo loop bueno, y otra estructura que se ajusta al escenario. –

Cuestiones relacionadas