数组字符串中的PadRight不会添加字符

时间:2017-12-03 18:05:59

标签: c# arrays string console-application

我创建了一些字符串数组,其中包含长度为4到6的字符串。我正在尝试PadRight 0来获取数组中每个元素的长度为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]);
}

现在,程序写下我在数组中完全相同的字符串,而不是在最后添加0&#39; s。我做了一些研究,发现一些关于字符串的信息是不可变的,但是仍然有一些改变字符串的例子,但是我找不到任何PadRight或PadLeft,我觉得必须有办法做它,但我无法弄清楚。

有关如何解决该问题的任何想法?

1 个答案:

答案 0 :(得分:2)

PadRight的第一个参数是您想要的长度。你已经指定了6 - array1[i].Length - 并且因为你的所有字符串都以至少3个字符开头,你最多填充最多 3个字符,所以它没有做任何事情。

您不需要内部循环,外部循环条件更常规地写为<。这是我编写代码的一种方式:

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]);
        }
    }
}

事实上,我可能会使用foreach,甚至是Select,但这是另一回事。我使用数组离开了这个,使其更接近原始代码。