题
我建立了一系列的串
string[] parts = string.spilt(" ");
并得到一系列与X部分,我希望得到一份列串起元
parts[x-2]
其他明显的暴力的方法(作一个新阵列,并插入串),是否有一个更优雅的方式做到这一点,在C#?
解决方案
怎么样阵列。副本?
http://msdn.microsoft.com/en-us/library/aa310864(VS。71).aspx
阵列。复制的方法(阵列,Int32,阵列,Int32,Int32)
复制一个范围的要素从一系列开始在指定的来源索引和粘贴到另一个阵列开始在指定目的地的索引。长度和索引指定为32位整数。
其他提示
我记得回答这个问题,只是了解一个新的对象,可提供一种高性能的方法做你想要什么。
看看 ArraySegment<T>
.它会让你那么做.
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);
假设 List<string>(string[])
是的优化使用现有阵列作为后备存储,而不是做复印的操作,这可能以更快的速度比做一系列的副本。
使用 阵列。复制.它有一个超载做什么你需要:
阵列。复制(阵列,Int32,阵列, Int32,Int32)
复制一个范围的要素从一系列开始在指定的来源 索引和粘贴到另一个阵列 开始在指定目的地 索引。
我猜是这样的:
string[] less = new string[parts.Length - (x - 2)];
Array.Copy(parts, x - 2, less, 0, less.Length);
(sans 将由1错误,我敢肯定是在那里。)
不隶属于 StackOverflow