我在列表中有一些字符串
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作为答案。
答案 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()
;