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

时间:2015-02-04 17:13:33

标签: c# foreach

假设我有以下字符串:

  string str = "aaa123aaa";

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

 char[] array1 = str.ToArray();

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

foreach (char i in array1)
        {
            if (char.IsNumber(i)) { //   ? }
        }

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

i = ' '; char(i) = ' '; array1(i) = ' ';

他们都没有工作。

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

array1[i] = ' ';

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

提前谢谢!

3 个答案:

答案 0 :(得分:8)

如果foreach循环,则无法更改集合的元素 - 但您可以使用for循环:

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

请注意,更改原始字符串 - 如果您想这样做,可以采用更有效的方式转换为char数组。

答案 1 :(得分:5)

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

char[] array1 = str.Select(x => char.IsNumber(x) ? ' ' : x).ToArray();

答案 2 :(得分:1)

如果替换很简单,为什么不使用.NET Regex类并根据模式替换数字?

string test = "aaa123aaa";
test = Regex.Replace(test, "[0-9]", " ");