0

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

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

任何帮助,将不胜感激。

4

3 回答 3

3

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

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

于 2013-05-12T12:26:35.190 回答
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);
            }
于 2013-05-12T12:35:02.743 回答
0

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

于 2013-05-12T12:41:13.107 回答