在Foreach循环中工作和修改数据?C#

-4 c# foreach

可以说我有以下字符串:

  string str = "aaa123aaa";
Run Code Online (Sandbox Code Playgroud)

我将给定的字符串转换为char数组:

 char[] array1 = str.ToArray();
Run Code Online (Sandbox Code Playgroud)

然后我想使用foreach循环遍历元素以将所有数字更改为空格

foreach (char i in array1)
        {
            if (char.IsNumber(i)) { //   ? }
        }
Run Code Online (Sandbox Code Playgroud)

我究竟如何将符合条件的字符更改为空格?我试过以下无济于事:

i = ' '; char(i) = ' '; array1(i) = ' ';
Run Code Online (Sandbox Code Playgroud)

他们都没有工作.

我如何与foreach循环中的元素进行交互?如果我使用数组很简单,在这种情况下我只会使用:

array1[i] = ' ';
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在foreach循环中做同样的事情.

先感谢您!

D S*_*ley 8

如果foreach循环你不能改变集合的元素- 但你可以for循环:

for(int i=0; i < array1.Length; i++)
{
    if (char.IsNumber(array1[i])) { array1[i] = ' ' }
}
Run Code Online (Sandbox Code Playgroud)

请注意,这并不会改变原来的字符串-如果你想这样做,有转化为更有效的方式char排列.


Sel*_*enç 5

您可以使用for循环代替它,也可以使用LINQ

char[] array1 = str.Select(x => char.IsNumber(x) ? ' ' : x).ToArray();
Run Code Online (Sandbox Code Playgroud)