2008-08-27 29 views
6

construyo una matriz de cadenas conPass referencia al elemento en C# matriz

string[] parts = string.spilt(" "); 

y obtener una matriz con X partes en ella, me gustaría obtener una copia de la matriz de cadenas a partir del elemento

parts[x-2] 

Aparte del método de fuerza bruta obvia (hacer una nueva matriz e insertar cadenas), hay una manera más elegante de hacer esto en C#?

Respuesta

2

¿Qué hay de matriz .¿Dupdo?

http://msdn.microsoft.com/en-us/library/aa310864(VS.71).aspx

Array.Copy Método (Array, Int32, Array, Int32, Int32)

Copia una gama de elementos de una matriz empezando por el índice de origen especificado y los pega a otra matriz comenzando en el índice de destino especificado. La longitud y los índices se especifican como enteros de 32 bits.

-1

Use Array.Copy. Tiene una sobrecarga que hace lo que necesita:

Array.Copy (Array, Int32, Array, Int32, Int32)
Copia un rango de elementos de una matriz empezando por el índice especificado y fuente los pega en otra matriz comenzando en el índice de destino especificado .

-1

Array.Copy Method

supongo que algo así como: (. sans el frente por 1 error que estoy seguro es de allí)

string[] less = new string[parts.Length - (x - 2)]; 
Array.Copy(parts, x - 2, less, 0, less.Length); 

0
List<string> parts = new List<string>(s.Split(" ")); 
parts.RemoveRange(0, x - 2); 

Suponiendo que List<string>(string[]) está optimizado para usar la matriz existente como almacén de respaldo en lugar de hacer una operación de copia esto podría ser más rápido que hacer una copia matriz.

6

Recordé haber respondido esta pregunta y acabo de enterarme de un nuevo objeto que puede proporcionar un método de alto rendimiento para hacer lo que usted desea.

Eche un vistazo a ArraySegment<T>. Te permitirá hacer algo como.

string[] parts = myString.spilt(" "); 
int idx = parts.Length - 2; 
var stringView = new ArraySegment<string>(parts, idx, parts.Length - idx); 
Cuestiones relacionadas