从包含字符串的ArrayList中删除所有元素

时间:2016-12-22 12:28:40

标签: c# arraylist

我一直试图弄清楚如何删除ArrayList中包含一些文本字符串的元素。

My Array看起来像这样:

[0] "\"MAERSKA.CO\",N/A,N/A,N/A,N/A,N/A,N/A"
[1] "\"GEN.COABB.ST\",N/A,N/A,N/A,N/A,N/A,N/A"
[2] "\"ARCM.ST\",\"Arcam AB\",330.00,330.50,332.00,330.50,330.00"   

我的ArrayList是这样创建的:

string stringToRemove = "NA";   
ArrayList rows = new ArrayList(csvData.Replace("\r", "").Split('\n'));

所以问题是我如何删除包含" NA"的所有条目。 我已尝试使用Contains的几种组合删除RemoveAt或RemoveAll,但我似乎无法使代码正确。

如果可以避免,我不想制作新的数组。

此致 弗莱明

2 个答案:

答案 0 :(得分:1)

如果要在实例化变量之前减少ArrayList,请考虑使用LINQ:

ArrayList rows = new ArrayList(csvData.Replace("\r", "").Split('\n').Where(r => !r.Contains(stringToRemove)).ToList());

如果要在实例化后减少ArrayList,可以尝试:

for (int i = 0; i < rows.Count; i++)
{
    var row = (string)rows[i];
    if (row.Contains(stringToRemove))
    {
        rows.RemoveAt(i);
        i--;
    }
}

答案 1 :(得分:0)

以下代码创建一个列表作为输出,包含除“N / A”以外的所有字符串:

var outputs = new List<string>();
foreach (var item in input)
{
    var splitted = item.Split(',');
    foreach (var splt in splitted)
    {
        if (splt != "N/A")
        {
            outputs.Add(splt);
        }
    }
}

输入是你的数组。