从数组C#中删除字符串

时间:2011-03-31 20:50:10

标签: c# .net arrays

是否有从数组中删除最后一个单元格的函数?

它是一个字符串数组,如:{"a","b","c",""}

7 个答案:

答案 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)

  1. 创建等于现有数组大小-1的新数组
  2. aNewArray = aOldArray
  3. 当然,您可以将数组中的最后一个元素置空,但这会导致以后出现问题。否则,请使用一个很好的灵活列表。

答案 6 :(得分:0)

如果你总想摆脱最后一个元素,

        int[] a = new[] {1, 2, 3, 4, 5};
        int[] b = new int[a.Length - 1];
        Array.Copy(a, b, a.Length - 1);