替换子字符串只能在最后一个字母中使用?为什么?

时间:2013-05-12 12:21:19

标签: c# replace stringbuilder

我是编程的新手,所以我不确定如何标题,但是我试图通过将字符串与字符串子字符串进行比较来替换字符串构建器对象中的字母,但它只能用于最后一个字母,为什么?如何以相同的方式替换中间字母?

string S = "Hello";
StringBuilder sB = new StringBuilder("*****");
Console.WriteLine(sB);

string userInput = Console.ReadLine();

for (int i = 0; i < 5; i++)
{
    if (userInput == S.Substring(i))
    {
        sB.Remove(i, 1);
        sB.Insert(i, userInput);
        Console.WriteLine(sB);
    }
}

Console.ReadKey();

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:3)

string.Substring(int) method从指定的字符索引开始返回整个子字符串,而不仅仅是一个字符。

要检索S的第i个字符,请使用S[i]

答案 1 :(得分:0)

只有1个参数的子串将从该位置到字符串末尾(“Hello”.Substring(1)将是“ello”)。要只取一个字母,你需要为长度提供第二个参数(“Hello”.Substring(1,1)将是“e”)。

            if (userInput.Substring(i, 1) == S.Substring(i, 1))
            {
                sB.Remove(i, 1);
                sB.Insert(i, userInput.Substring(i, 1));
                Console.WriteLine(sB);
            }

答案 2 :(得分:0)

您可能有兴趣使用String.Contains(string comparison)来查看字符串是否在另一个字符串中。另外,String.Replace(string target, string replacement)替换可变长度字符串而不是循环遍历字符。