C# 实现字符串替换函数

C# 实现字符串替换函数,c#,.net,C#,.net,我正在尝试实现字符串替换函数,但是我能够使用字符替换(下面的代码)。对于字符串替换,我查找了下面有注释的Microsoft参考源代码。虽然我查找了stringbuilder代码,但我不能很好地理解它,我迷路了。如果有人能帮助我,告诉我如何做,我将不胜感激 //此方法包含与StringBuilder Replace相同的功能。唯一的区别是 //由于字符串是不可变的,因此必须分配新字符串 这是我用来替换字符的 public string StringReplaceUtil(string str, c

我正在尝试实现字符串替换函数,但是我能够使用字符替换(下面的代码)。对于字符串替换,我查找了下面有注释的Microsoft参考源代码。虽然我查找了stringbuilder代码,但我不能很好地理解它,我迷路了。如果有人能帮助我,告诉我如何做,我将不胜感激

//此方法包含与StringBuilder Replace相同的功能。唯一的区别是 //由于字符串是不可变的,因此必须分配新字符串

这是我用来替换字符的

public string StringReplaceUtil(string str, char find, char replace)
{
    char[] ch = new char[str.Length];
    int j=0;
    ch = str.ToCharArray();
    for (int i = 0; i < ch.Length; i++)
    {
        if (ch[i] == find)
            ch[j] = replace;
        else
            ch[j] = ch[i];
        j++;
    }
    return new string(ch).Substring(0,j);
}
公共字符串StringReplaceUtil(字符串str、字符find、字符replace)
{
char[]ch=新字符[str.Length];
int j=0;
ch=托卡雷街();
for(int i=0;i
我不确定您为什么不使用string.replace()函数。这将在不实现任何新代码的情况下精确地执行您正在尝试执行的操作

string line = "This is a test string"
string find = "a"
string replace = "an awesome"

console.write(line.replace(find, replace))
返回:

"This is an awesome test string"

代码中的错误在于不需要单独的j索引,只需要一直使用i。尽管正如其他人所指出的,无论如何不要这样做

char[] ch = str.ToCharArray();
for (int i = 0; i < ch.Length; i++)
{
    if (ch[i] == find)
        ch[i] = replace;
}
char[]ch=str.ToCharArray();
for(int i=0;i

如果要用字符串而不是字符替换,则需要更复杂的代码

为什么不使用string.Replace()方法?您可以用字符或整个字符串替换!为什么?否决票-不管是谁干的你能说出原因吗?!我建议查看META上的讨论,以获得对否决票评论的支持——当然,我知道有一个替换函数,我可以使用它。但是,这不是发布这个问题的重点。正确阅读标题。如果你仍然需要我为什么要这么做——我正在准备面试,希望这能有所帮助。谢谢你指出错误。是的,我知道这肯定很复杂,但我想知道解决这个问题的方法。从我得到的回答来看,我想,这不是要求实现内置函数的地方,或者至少不知道如何实现。非常失望。@Kar你可以问这个问题,但要明确你这样做是为了锻炼身体。现在还不清楚您是否知道已经有一个函数可以完全满足您的需要,人们只是说“为什么不使用现有函数呢?”“对于字符串替换,我查找了Microsoft参考源,其中有以下注释。”。和“//此方法包含与StringBuilder Replace相同的功能。唯一的区别是//必须分配新字符串,因为字符串是不可变的”。这些是我的帖子。这很清楚,我知道有一个函数,并转到参考源代码查看其实现。如果没有,我很抱歉。让我吃惊的是,第一个答案的反对票+赞成票。