2011-10-18 13 views
9

So che questo funziona per ottenere il primo elemento di un arrayC# array ottenere ultimo elemento da Spalato in una linea

string aString = @"hello/all\this\is/a\test"; 
string firstItemOfSplit = aString.Split(new char[] {'\\', '/'})[0]; 
//firstItemOfSplit = hello 

c'è un modo per ottenere l'ultimo elemento? Qualcosa di simile

string aString = @"hello/all\this\is/a\test"; 
string lastItemOfSplit = aString.Split(new char[] {'\\', '/'})[index.last]; 
//lastItemOfSplit = test 
+1

btw, un modo più pulito di scissione chiamare sarebbe 'aString.Split ('\\', '/')'. – recursive

+1

o 'aString.Split (@" \/". ToCharArray())'. –

risposta

25

È possibile utilizzare il metodo di estensione IEnumerable.Last() da System.Linq.

string lastItemOfSplit = aString.Split(new char[] {@"\"[0], "/"[0]}).Last(); 
+0

Linq diventa sempre meglio 1 – ppumkin

7

Come utilizzando il metodo IEnumerable.Last() estensione? Include System.Linq e lo avrai.

+0

che ha fatto il trucco, grazie –

7

Si può sempre usare LINQ:

string lastItem = aString.Split(...).Last(); 

noti che Enumerable.Last()èoptimized when working on an IList<T> e non si sta applicando un predicato - quindi non è nemmeno andando a piedi lungo l'intera sequenza per trovare l'ultimo. (Non che sia comunque un problema.)

0

questo uno ho provato e ha funzionato.

string LastItem= (@"hello/all\this\is/a\test").Split(new char[] {@"\"[0], "/"[0]}).Last(); 
    Console.WriteLine(LastItem); 
3

Se è possibile utilizzare Linq:

string aString = @"hello/all\this\is/a\test"; 
string lastItemOfSplit = aString.Split("\/".ToCharArray()).Last(); 

Ecco una versione più GC-friendly che non richiede LINQ.

string aString = @"hello/all\this\is/a\test"; 
string lastItemOfSplit = 
    aString.Substring(aString.LastIndexOfAny(@"\/".ToCharArray()) + 1); 
Problemi correlati