Beh, posso farlo in una linea molto lunga, anche senza usare LINQ o un lambda:
string original = "reverse me"; char[] chars = original.ToCharArray(); char[] reversed = new char[chars.Length]; for (int i=0; i < chars.Length; i++) reversed[chars.Length-i-1] = chars[i]; string reversedValue = new string(reversed);
(Cari potenziali editori:. fare non unwrap presente su più righe il punto è che si tratta di una singola linea, come per la frase di cui sopra e la domanda.)
Tuttavia, se vedessi qualcuno che evita di usare i metodi framework per il gusto di farlo, metterei in discussione la loro sanità mentale.
Si noti che questo non utilizza affatto LINQ. Una risposta LINQ sarebbe:
string reverseValue = new string(original.Reverse().ToArray());
Evitando utilizzando Reverse, ma utilizzando invece OrderByDescending:
string reverseValue = new string(original.Select((c, index) => new { c, index })
.OrderByDescending(x => x.index)
.Select(x => x.c)
.ToArray());
Blech. Mi piace la risposta di Mehrdad però. Naturalmente, tutti questi sono molto meno efficienti rispetto all'approccio diretto.
Oh, e anche loro hanno torto. L'inversione di una stringa è più complessa rispetto all'inversione dell'ordine dei punti di codice. Prendere in considerazione i caratteri che conciliano, coppie di surrogati, ecc ...
fonte
2009-07-20 11:04:56
una sola domanda: perché? –
Im confuso .... perché non vuoi usare il metodo Array.Reverse? – James
qual è un LINQ o una lambda meglio dei metodi di stringa più che adeguati? –