簡體   English   中英

從數組C#中刪除字符串

[英]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);
  1. 創建等於現有數組大小-1的新數組
  2. aNewArray = aOldArray

當然,您可以將數組中的最后一個元素置空,但這會導致以后出現問題。 否則,請使用靈活的列表。

如果你總想擺脫最后一個元素,

        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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM