2011-11-28 18 views
5

C'è un modo per cambiare "ABCDEFGHIJKLMNOP" su "ABCD-EFGH-IJKL-MNOP" utilizzando la funzione string.format() o forse LINQ?
Sto usando questa dichiarazioneQual è il modo migliore per separare la stringa utilizzando la funzione 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)); 

c'è un modo migliore e più chiara per ottenere questo risultato?

+0

un problema con la vostra variante è che se la stringa è più corta di 16 caratteri, il programma ** morire !! ** –

risposta

10

È potrebbe uso string.Format, ma si sarebbe comunque necessario utilizzare SubString per ottenere le diverse parti.

Probabilmente si dovrebbe usare solo Insert:

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

LINQ è eccessivo per qualcosa di simile.

9

Questo è veramente facile da fare, senza LINQ o String.Format, quindi vorrei suggerire di utilizzare questo codice invece:

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

Questo inserirà un trattino dopo ogni 4 caratteri (ho pensato che è quello che volevi).

3

Solo per divertimento, in Linq:

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

Naturalmente, io non Consiglierei utilizzando LINQ in questo caso, come una soluzione 'classica' sarebbe più efficiente e più leggibile.

Eppure, mi sono divertito a scrivere questo: D

+0

veramente brutto ... e divertente;) –

+0

Ah ah: D bella 1! Anch'io ho provato qualcosa di simile. Ma non ha funzionato – Niranjan

+0

Funziona come previsto, ma è un problema (come sa anche KooKiz anche se ha postato questa soluzione), per una persona che non sa cosa fa questo codice è molto difficile da leggere e vedere cosa fa. Non vedo perché tu voglia usare LINQ per questo solo perché è nuovo e brillante. I ** love ** LINQ, ma non lo forzerò dove è semplicemente più semplice e molto più leggibile usare un buon vecchio ciclo, e un'altra struttura che si adatta allo scenario. –

Problemi correlati