繁体   English   中英

替换列表中的字符串的问题,该列表是循环中对象的属性

[英]Problem replacing string within a list thats is attribute to an object within a loop

我有一个类Plott 其中一个属性是一个带有标题名称的列表,称为Headers 该列表存储图中所有列的名称。

我需要遍历这些对象(列表中的 plt)并找到任何包含字符串"aaa"的标题并将其替换为字符串"bbb"

我成功地循环并在这些对象中找到了这些标头。 我还可以定义一个用"bbb"替换"aaa"的新字符串,但是当我尝试将新字符串分配给该对象时,即列表的索引到该对象时,它会给出一个错误,即集合已更改并且循环不能继续(错误信息不是英文,所以我不会在这里发布)

foreach (Plott obj in plt) {
    int c = 0;
    foreach (String s in obj.Headers)
    { 
        if (s.Contains("aaa"))
        {
            string newstr;
            newstr = s.Replace("aaa", "bbb");
            obj.Headers[c] = newstr;
        }
        c++;
    }
}

只需替换整个列表。

obj.Headers = obj.Headers.Select( x => x.Replace("aaa","bbb") ).ToList();

您在 foreach 循环中检索的变量是集合中元素的只读副本,因此您无法修改它。

如果你想这样做,那么你需要使用一个简单的 for 循环

for (int ind = 0; ind < plt.Count(); ind++)
{  
    ....
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM