C#Lambda表达式替换字符串数组中的字符串值

时间:2018-08-16 03:00:53

标签: c# .net lambda

我正在尝试使用.net 4.0 lambda方法来删除数组中各项周围的双引号(“)。这是我的代码,但是,这似乎不起作用。

我在做什么错了?

string[] sa = new string[] { "\"Hello\"", "\"Goodbye\"", "\"Moshi\"", "\"Adios\"" };

// Trying to replace the 
Array.ForEach(sa, s => s.Replace("\"", "")); // Doesn't remove the quotes surrounding the string "Hello".
foreach(var s in sa)
   Console.WriteLine(s);

这仍然不能消除项目周围的“。

3 个答案:

答案 0 :(得分:8)

没有lambda表达式可以插入ForEach中以实现您的目标,因为lambda可以执行的操作没有对该元素的写权限,并且string本身是不变

您可以做的是替换整个数组,如下所示:

sa = sa.Select(s => s.Replace("\"", "")).ToArray();

这种方法行之有效,因为它将整个sa数组替换为基于sa元素的新创建的数组。

答案 1 :(得分:1)

您可以使用Linq:

sa = sa.Select(s => s.Replace("\"", "")).ToArray();

或用于循环:

for (var i = 0; i < sa.Length; i++)
    {
        sa[i] = sa[i].Replace("\"", "");
    }

答案 2 :(得分:0)

其他答案是,如果您希望对项目执行的某些处理中不包含 new 数组,应该怎么做。

但是,如果不需要(需要一个新的数组),并且想对数组的每个项目执行ActionArray.ForEach的作用),则可以执行以下操作:< / p>

//This is pretty much what your code is trying to do
Array.ForEach(sa, i => Console.WriteLine(i.Replace("\"", "")));
相关问题