我一直试图弄清楚如何删除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,但我似乎无法使代码正确。
如果可以避免,我不想制作新的数组。
此致 弗莱明
答案 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);
}
}
}
输入是你的数组。