假设我有以下字符串:
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循环中做同样的事情。
提前谢谢!
答案 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]", " ");