实现字符串替换函数

时间:2016-02-04 23:09:59

标签: c# .net

我正在尝试实现字符串替换功能,但我能够处理字符替换(下面的代码)。对于字符串替换我查找了Microsoft参考源,其中有以下评论。虽然我查找了stringbuilder代码,但我无法理解它并且我迷路了。感谢是否有人可以帮助我了解如何做到这一点的方向/想法。

//此方法包含与StringBuilder Replace相同的功能。唯一的区别是         //因为字符串是不可变的

,所以必须分配一个新的String

这就是我对char替换的原因

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);
}

2 个答案:

答案 0 :(得分:2)

我不确定你为什么不使用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"

答案 1 :(得分:2)

您的代码中的错误是您不需要单独的j索引,只需一直使用i。虽然正如其他人所指出的那样 - 无论如何都不要这样做。

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

如果要替换字符串而不是字符

,则需要更复杂的代码