我正在开发一个C#.NET Framework库。
如果我有这个数组string[] elements
。我想在所有这些字符中删除此字符\"
,如何在一条指令中执行此操作?
我知道我可以这样做:
foreach(string element in elements)
element = element.Replace("\"", string.Empty);
有没有办法用一句话来做? (不使用foreach)。
答案 0 :(得分:7)
您可以使用新值创建新数组:
var newValues = elements.Select(x => x.Replace("\"", string.Empty)).ToArray();
如果创建一个新阵列会出现问题,你应该坚持使用循环方法。
此外,您无法更改foreach
循环变量。您应该收到编译错误:
无法分配到'元素'因为它是一个foreach迭代变量'
您需要for
循环:
for(int i = 0; i < elements.Length; i++)
elements[i] = elements[i].Replace("\"", string.Empty);
答案 1 :(得分:3)
首先,您的代码无法正常工作,因为它只会创建string
的新实例。您不会使用新值更新数组。
你可以使用LINQ的Select
来获得你想要的东西:
elements = elements.Select(x => x.Replace("\"", string.Empty)).ToArray();
此代码将使用elements
的修改值创建一个新数组。请注意,此代码的效率低于常规for
循环,我建议在这种情况下使用。
答案 2 :(得分:1)
在一行中,确定,简单,只需删除该换行符并缩进:
foreach(string element in elements) element = element.Replace(@"\"", string.Empty);
不使用foreach循环?当然,请改为使用:
for (int i = 0; i < elements.Length; i++) elements[i] = elements[i].Replace(@"\"", string.Empty);
您可能已经注意到我放在那里的@
。非常重要,基本上忽略了转义序列,所以它实际上摆脱了\"
而不仅仅是"