我正在尝试实现字符串替换功能,但我能够处理字符替换(下面的代码)。对于字符串替换我查找了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);
}
答案 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;
}
如果要替换字符串而不是字符
,则需要更复杂的代码