Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用扩展方法替换字符串_C#_.net - Fatal编程技术网

C# 使用扩展方法替换字符串

C# 使用扩展方法替换字符串,c#,.net,C#,.net,例如,如果我有一个字符串,我想用星号替换该字符串中的最后一个字符 我试过这个 var myString = "ABCDEFGH"; myString.ReplaceCharacter(mystring.Length - 1, 1, "*"); public static string ReplaceCharacter(this string str, int start, int length, string replaceWith_expression) { return str.

例如,如果我有一个字符串,我想用星号替换该字符串中的最后一个字符

我试过这个

var myString = "ABCDEFGH";
myString.ReplaceCharacter(mystring.Length - 1, 1, "*"); 

public static string ReplaceCharacter(this string str, int start, int length, string replaceWith_expression)
{
    return str.Remove(start, length).Insert(start, replaceWith_expression);
}
我尝试过使用这种扩展方法,但不起作用。
为什么这不起作用?

该方法实际上是替换字符,但您必须捕获结果

myString = myString.ReplaceCharacter(myString.Length - 1, 1, "*"); 

问题是字符串是不可变的。方法replace、substring等不会更改字符串本身。他们创建一个新字符串并替换它。因此,要使上述代码正确,它应该是

myString = myString.ReplaceCharacter(myString.Length - 1, 1, "*"); 
可能重复的