PadRight in string of arrays doesn't add chars

I created array of strings which includes strings with Length from 4 to 6. I am trying to PadRight 0's to get length for every element in array to 6.

string[] array1 =
{
    "aabc", "aabaaa", "Abac", "abba", "acaaaa"
};

for (var i = 0; i <= array1.Length-1; i++)
{
    if (array1[i].Length < 6)
    {
        for (var j = array1[i].Length; j <= 6; j++)
        {

            array1[i] = array1[i].PadRight(6 - array1[i].Length, '0');

        }

    }
    Console.WriteLine(array1[i]);
}

Right now the program writes down the exact same strings I have in array without adding 0's at the end. I made a little research and found some informations about that strings are immutable, but still there are some example with changing strings inside, but I couldn't find any with PadRight or PadLeft and I fell like there must be a way to do it, but I just can't figure it out.

Any ideas on how to fix that issue?

Jon Skeet
people
quotationmark

The first argument to PadRight is the total length you want. You've specified 6 - array1[i].Length - and as all your strings start off with at least 3 characters, you're padding to at most 3 characters, so it's not doing anything.

You don't need your inner loop, and your outer loop condition is more conventionally written as <. This is one way I'd write that code:

using System;

public class Test
{
    static void Main()
    {
        string[] array =
        {
            "aabc", "aabaaa", "Abac", "abba", "acaaaa"
        };

        for (var i = 0; i < array.Length; i++)
        {
            array[i] = array[i].PadRight(6, '0');
            Console.WriteLine(array[i]);
        }
    }
}

In fact I'd probably use foreach, or even Select, but that's a different matter. I've left this using an array to be a bit closer to your original code.

people

See more on this question at Stackoverflow