Pergunta

Eu construir uma matriz de seqüências de caracteres com

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

E obter uma matriz de X peças, eu gostaria de obter uma cópia da matriz de seqüências de caracteres começando pelo elemento

parts[x-2]

Além da óbvia abordagem de força bruta (fazer uma nova matriz e inserir strings), existe uma forma mais elegante de fazer isso em C#?

Foi útil?

Solução

Como sobre a Matriz.Copiar?

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

Matriz.O Método De Cópia (Matriz, Int32, Matriz, Int32, Int32)

Cópias de uma série de elementos a partir de uma Matriz inicial no índice de origem e cola-los para outra Matriz de partida, no destino especificado índice.O comprimento e os índices são especificados como números inteiros de 32 bits.

Outras dicas

Lembrei-me responder a esta questão e que acabou de aprender sobre um novo objeto que pode fornecer um alto desempenho método de fazer o que você quiser.

Dê uma olhada no ArraySegment<T>.Ele vai deixar você fazer algo parecido.

string[] parts = myString.spilt(" ");
int idx = parts.Length - 2;
var stringView = new ArraySegment<string>(parts, idx, parts.Length - idx);
List<string> parts = new List<string>(s.Split(" "));
parts.RemoveRange(0, x - 2);

Partindo do princípio de que List<string>(string[]) é otimizada para usar a matriz existente como um armazenamento de backup em vez de fazer uma operação de cópia isto pode ser mais rápido do que fazer uma matriz de cópia.

Utilização Matriz.Cópia.Ele tem uma sobrecarga que faz o que você precisa:

Matriz.Cópia (Matriz, Int32, Matriz, Int32, Int32)
Cópias de uma série de elementos a partir de uma Matriz inicial na origem especificada índice e cola-los para outra Matriz de partida, no destino especificado o índice.

Matriz.O Método De Cópia

Eu acho que algo como:

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

(sans o fora por 1 bug que eu tenho certeza que está lá.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top