删除c#中列表中所有字符串中的特定char

时间:2014-07-23 16:56:58

标签: c# list replace

我在列表中有一些字符串

KHIJEFGACDB
KHIJEFGBACD
KHIJEFGBCDA
KHIJEFGCDAB
KHIJEFGCDBA
KHIJGABCDEF
KHIJGABEFCD
KHIJGACDBEF
KHIJGACDEFB
KHIJGAEFBCD
KHIJGAEFCDB
KHIJGBACDEF
KHIJGBAEFCD

我需要删除列表中所有字符串中可用的HIJ

我制作了一个C#程序,如下所示

foreach (string item in items)
{
    item.Replace("HIJ", "");
}
Console.WriteLine(items.FirstOrDefault().Length);

但它仍然显示11表示HIJ未被删除。如何解决这个问题并得到8作为答案。

2 个答案:

答案 0 :(得分:8)

字符串在C#中是不可变的。尝试

for (int i = 0; i < items.Length; i++)
    items[i] = items[i].Replace("HIJ", "");

请注意

foreach (string item in items)

item无法修改。而且,BTW,foreach 不能用于添加或删除源集合中的项目以避免不可预测的副作用。请参阅http://msdn.microsoft.com/en-us/library/ttw7t8t6.aspx

答案 1 :(得分:3)

如上所述,字符串是不可变的。 string.Replace()会返回新字符串:它不会修改现有字符串。

但是您可以使用Linq在一行中完成此操作,如下所示:

string[] items = GetMeSomeItems()
                 .Select( s => s.Replace("HIJ","") )
                 .ToArray()
                 ;