2011-03-31 131 views
4

有從數組中刪除最後一個單元格的功能?從陣列C#中刪除字符串

這是一個字符串數組,如:{"a","b","c",""}

+4

陣列可包含任何對象/類型。所以請給你的問題多一點意義。理想情況下,提供輸入數組和所需輸出數組的示例。甚至更好:展示你到目前爲止已經嘗試解決無法解決的問題。在簡單的話:[提出問題](http://msmvps.com/blogs/jon_skeet/archive/2010/08/29/writing-the-perfect-question.aspx)。 – 2011-03-31 20:51:14

回答

13

數組的長度是不變的,但你可以不空""字符串創建一個新的數組:

string[] newArray = myArray.Where(str => str != "").ToArray(); 
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); 
0
  1. 創建新陣列等於現有陣列大小-1
  2. aNewArray = aOldArray

Ofcourse,你可以只空的最後一個元素數組中,但是這將導致問題以後。否則,請使用一個很好的靈活列表。

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

數組是一個固定大小的集合對象。這使得它對於你想要做的事情來說可悲的不足。你可以做的最好的是創建另一個一個少一個元素。這太貴了。

解決真正的問題,這應該是一個List<string>,現在它的簡單。

8

呃...只是調整它

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

從文檔

公共靜態無效調整大小(參照T []數組,整數新尺寸)