C# 更改字符串中的第二个字符

C# 更改字符串中的第二个字符,c#,C#,这是我现在的代码,我想用“@”替换字符串上的第二个字符,现在的问题是@中的每个e都将被替换,如何解决这一问题,即只替换第二个字符,而不替换其他字符?一种方法是只为第二个字符指定一个新值: string input = "testeeeeeee"; char[] temp = input.ToCharArray(); var test = Regex.Replace(input.Replace(temp[1].ToString(), "@").Trim(), @"\s+", " "); Conso

这是我现在的代码,我想用“@”替换字符串上的第二个字符,现在的问题是@中的每个e都将被替换,如何解决这一问题,即只替换第二个字符,而不替换其他字符?

一种方法是只为第二个字符指定一个新值:

string input = "testeeeeeee";
char[] temp = input.ToCharArray();
var test = Regex.Replace(input.Replace(temp[1].ToString(), "@").Trim(), @"\s+", " ");
Console.WriteLine(test);
您可能希望对原始字符串而不是
char[]
执行类似于
input[1]
=
@
的操作,但由于字符串是不可变的,您无法更改它,并且索引器是只读的


另一种方式(我认为不太可取):

对于第二种方法,使用
子字符串
从第二个索引获取字符串,直到结束

可以使用该函数


如果可能的话,它需要是可链接的,很抱歉没有告诉你创建一个扩展方法@JordiMutsaers@JordiMutsaers-这有助于您解决发布的问题吗?字符串是不可变的。您可以使用StringBuilder、字符数组或仅连接两个子字符串。在这里找到一个非常相似的答案
var input = "testeeeeeee".ToCharArray();
input[1] = '@';

var result = new string(input);
var input = "testeeeeeee";
var result =  input[0] + "@" + string.Concat(input.Skip(2));
string input = "testeeeeeee";
string new_input = input.Substring(0, 1) + "@" + input.Substring(2, input.Length)