附加没有硬编码值的字符串

时间:2018-11-08 14:01:31

标签: c# .net string

我有一个看起来像这样的字符串:

A5050MM

我想要实现的是将字符串的末尾附加为:

A5050MM01
A5050MM02
...

目前,我正在按照以下步骤进行操作:

string sn = "A5050MM";

for (int i = 0; i <= 99; i++)
{
   string appendVal = i < 10 ? "0" + i : i.ToString();
   string finalsn = string.Concat(sn, appendVal);
   Console.WriteLine(finalsn);
}

这有效,但是如您所见,我正在对"0"进行硬编码,因为如果不这样做,输出将是A5050MM1, A5050MM2 ...直到9。

我的问题是没有"0"无需硬编码即可实现此 的另一种方法,或者这是我唯一必须遵循的方法吗?

在此先感谢您的帮助。

5 个答案:

答案 0 :(得分:7)

尝试使用格式(请注意d2格式字符串-至少 2 位数字):

 for (int i = 0; i <= 99; i++)
 {
     // sn followed by i which has at least 2 digits 
     string finalsn = $"{sn}{i:d2}";
     Console.WriteLine(finalsn);
 }

答案 1 :(得分:5)

您可以使用ToString的重载,其格式如下:

string sn = "A5050MM";

for (int i = 0; i <= 99; i++)
{
   string finalsn = string.Concat(sn, i.ToString("00"));
   Console.WriteLine(finalsn);
}

See a live demo on rextester.

答案 2 :(得分:0)

您也可以在toString liek中使用D2

        string sn = "A5050MM";

        for (int i = 0; i <= 99; i++)
        {
           string finalsn = string.Concat(sn, i.ToString("D2"));
           Console.WriteLine(finalsn);
        }

答案 3 :(得分:0)

您可以使用PadLeft功能

    string sn = "A5050MM";
    for (int i = 0; i <= 99; i++)
    {
        string finalsn = sn + i.ToString().PadLeft(2, '0');
        Console.WriteLine(finalsn);
    }

答案 4 :(得分:0)

Enumerable.Range(0, 99)
    .Select(x => String.Format("A5050MM{0:d2}", x))
    .ToList()
    .ForEach(x => Console.WriteLine(x));