删除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() ;