[英]Removing strings from array C#
是否有從數組中刪除最后一個單元格的函數?
它是一個字符串數組,如: {"a","b","c",""}
。
數組的長度是不可變的,但您可以創建一個沒有空""
字符串的新數組:
string[] newArray = myArray.Where(str => str != "").ToArray();
呃......只是調整它的大小
Array.Resize(ref theArray, theArray.Length -1);
來自文檔
public static void Resize(ref T [] array,int newSize)
如果它是一個字符串數組,您可以執行以下操作:
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 );
數組是固定大小的集合對象。 這使得它很不適合你想做的事情。 你能做的最好的事情就是用少一個元素創建另一個 。 這太貴了。
解決實際問題,這應該是List<string>
,現在很簡單。
var newArraySize = oldArray.Length - 1;
var newArray = new string[newArraySize];
Array.Copy(oldArray, newArray, newArraySize);
當然,您可以將數組中的最后一個元素置空,但這會導致以后出現問題。 否則,請使用靈活的列表。
如果你總想擺脫最后一個元素,
int[] a = new[] {1, 2, 3, 4, 5};
int[] b = new int[a.Length - 1];
Array.Copy(a, b, a.Length - 1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.