For looping and string

So I have a string, and in it, I want to replace last 3 chars with a dot.
I did something but my result is not what I wanted it to be.
Here is my code:

string word = "To je";
        for (int k = word.Length; k > (word.Length) - 3; k--)
        {
            string newWord = word.Replace(word[k - 1], '.');
            Console.WriteLine(newWord);
        }


The output I get is:
To j.
To .e
To.je

But the output I want is:
To...

How do I get there?
So the program is doing something similar to what I actually want it to do, but not quite.
I've really been struggling with this and any help would be appreciated.

Jon Skeet
people
quotationmark

Look at this:

string newWord = word.Replace(word[k - 1], '.');

You're always replacing a single character from word... but word itself doesn't change, so on the next iteration the replacement has "gone".

You could use:

word = word.Replace(word[k - 1], '.');

(And then move the output to the end, just writing out word.)

However, note that this will replace all occurrences of any of the last three characters with a ..

The simplest way to fix all of this is to use Substring of course, but if you really want to loop, you could use a StringBuilder:

StringBuilder builder = new StringBuilder(word);
for (int k = word.Length; k > (word.Length) - 3; k--)
{
    builder[k - 1] = '.';
}
word = builder.ToString();

people

See more on this question at Stackoverflow