是否有从数组中删除最后一个单元格的函数?
它是一个字符串数组,如:{"a","b","c",""}
。
答案 0 :(得分:13)
数组的长度是不可变的,但您可以创建一个没有空""
字符串的新数组:
string[] newArray = myArray.Where(str => str != "").ToArray();
答案 1 :(得分:8)
呃...只是调整它的大小
Array.Resize(ref theArray, theArray.Length -1);
来自文档
public static void Resize(ref T [] array,int newSize)
答案 2 :(得分:6)
如果它是一个字符串数组,你可以这样做:
string[] results = theArray.Where(s => !string.IsNullOrWhitespace(s)).ToArray();
如果您只是要迭代结果,则无需转换回数组,最后可以不使用.ToArray()
。
编辑:
如果您只想删除最后一个单元格,而不是空条目(根据您编辑的版本的建议),您可以使用Array.Copy比使用上面的LINQ语句更有效地执行此操作:
string[] results = new string[theArray.Length - 1];
Array.Copy( theArray, results, results.Length );
答案 3 :(得分:5)
数组是固定大小的集合对象。这使得它很不适合你想做的事情。您可以做的最好的事情是创建另一个,少一个元素。那很贵。
解决实际问题,这应该是List<string>
,现在很简单。
答案 4 :(得分:2)
var newArraySize = oldArray.Length - 1;
var newArray = new string[newArraySize];
Array.Copy(oldArray, newArray, newArraySize);
答案 5 :(得分:0)
当然,您可以将数组中的最后一个元素置空,但这会导致以后出现问题。否则,请使用一个很好的灵活列表。
答案 6 :(得分:0)
如果你总想摆脱最后一个元素,
int[] a = new[] {1, 2, 3, 4, 5};
int[] b = new int[a.Length - 1];
Array.Copy(a, b, a.Length - 1);