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

我在列表中有一些字符串

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作为答案。

字符串在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 。

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

但你可以使用Linq在一行中执行此操作,如下所示:

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