从数组中删除字符串 C#

4
有没有一个函数可以从数组中删除最后一个单元格?
它是一个字符串数组,例如:{"a","b","c",""}

4
一个数组可以包含任何对象/类型。因此请更具体地描述您的问题。最好提供一个输入数组和所需输出数组的示例。更好的做法是:展示一下您已经尝试过但不起作用的解决方法。简单来说,就是要“提问时请遵循这些原则”(http://msmvps.com/blogs/jon_skeet/archive/2010/08/29/writing-the-perfect-question.aspx)。 - Darin Dimitrov
7个回答

14

数组的长度是不可变的,但是您可以创建一个新的数组并删除其中为空的 "" 字符串:

string[] newArray = myArray.Where(str => str != "").ToArray();

9

嗯...只需调整大小

 Array.Resize(ref theArray, theArray.Length -1);

来自文档

public static void Resize(ref T[] array, int newSize)

该函数用于调整数组大小,其中参数ref T[] array表示要调整大小的数组,int newSize表示新的数组大小。

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 );

5

数组是一个固定大小的集合对象,这使它对你想要做的事情非常不适用。最好的方法是创建一个数组,它少了一个元素。这很昂贵。

解决真正的问题,这应该是一个List<string>,现在就简单了。


2
var newArraySize = oldArray.Length - 1;
var newArray = new string[newArraySize];
Array.Copy(oldArray, newArray, newArraySize);

0
如果您总是想要摆脱最后一个元素,
        int[] a = new[] {1, 2, 3, 4, 5};
        int[] b = new int[a.Length - 1];
        Array.Copy(a, b, a.Length - 1);

0
  • 创建一个新的数组,大小等于现有数组大小减1
  • aNewArray = aOldArray
  • 当然你可以将数组中的最后一个元素设置为null,但这会导致后续出现问题。否则,使用一个灵活的列表。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接