文字列の配列を作成します
string[] parts = string.spilt(" ");
X パーツを含む配列を取得します。要素から始まる文字列の配列のコピーを取得したいと思います
parts[x-2]
明白なブルート フォース アプローチ (新しい配列を作成して文字列を挿入する) 以外に、C# でこれを行うためのよりエレガントな方法はありますか?
私はこの質問に答えたことを思い出し、あなたが望むことを行うための高性能な方法を提供するかもしれない新しいオブジェクトについて学びました。
を見てくださいArraySegment<T>
。それはあなたに次のようなことをさせます。
string[] parts = myString.spilt(" ");
int idx = parts.Length - 2;
var stringView = new ArraySegment<string>(parts, idx, parts.Length - idx);
Array.Copyはどうですか?
http://msdn.microsoft.com/en-us/library/aa310864(VS.71).aspx
Array.Copyメソッド(Array、Int32、Array、Int32、Int32)
指定されたソースインデックスで始まる配列から要素の範囲をコピーし、指定された宛先インデックスで始まる別の配列に貼り付けます。長さとインデックスは32ビット整数として指定されます。
List<string> parts = new List<string>(s.Split(" "));
parts.RemoveRange(0, x - 2);
コピー操作を実行する代わりに既存のアレイをバッキングストアとして使用するように最適化されていると仮定すると、List<string>(string[])
これはアレイコピーを実行するよりも高速になる可能性があります。
Array.Copyを使用します。それはあなたが必要とすることをする過負荷を持っています:
Array.Copy(Array、Int32、Array、Int32、Int32)
指定されたソースインデックスで始まる配列から要素の範囲をコピーし、指定された宛先インデックスで始まる別の配列に貼り付けます。
私は次のようなものを推測します:
string[] less = new string[parts.Length - (x - 2)];
Array.Copy(parts, x - 2, less, 0, less.Length);
(そこにあると確信しているバグが1つあります。)