加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 用0到9之间的数字填充字符串并开始新的直到长度为50

发布时间:2020-12-15 23:48:02 所属栏目:百科 来源:网络整理
导读:所以今天我见过 this question.现在我想了一下,想出了以下场景: string myString = "Hello";int[] numbersFromZeroToNine = new[] { 0,1,2,3,4,5,6,7,8,9 }; 我想将numbersFromZeroToNine中的数字添加到myString(在0位重新启动),直到myString的长度为50.如
所以今天我见过 this question.现在我想了一下,想出了以下场景:

string myString = "Hello";
int[] numbersFromZeroToNine = new[] { 0,1,2,3,4,5,6,7,8,9 };

我想将numbersFromZeroToNine中的数字添加到myString(在0位重新启动),直到myString的长度为50.如果myString已超过50个字符,我想打印出前50个字符.

我可以通过使用以下行来实现它:

if (myString.Length >= 50)
    myString = myString.Substring(0,50);
else
{
    for (int counter = 0; myString.Length < 50; counter++)
    {
        if (counter == numbersFromZeroToNine.Count())
            counter = 0;
        myString += numbersFromZeroToNine[counter];
    }
}

Console.WriteLine(myString);
Console.ReadLine();

结果:

Hello012345678901234567890123456789012345678901234

如你所见,我可以在else中使用for循环和if语句.但我不认为这是这种情况下最好(也是最短)的方法.这就是我现在想问你的问题:是否有更短的解决方案来实现相同的结果?

解决方法

更糟糕,但我害怕,Linq解决方案的可读性较差:

string prefix = "Hello";
  int length = 50;

  // Hello012345678901234567890123456789012345678901234
  string result = prefix + 
    new string(Enumerable
                .Range(0,length - prefix.Length)
                .Select(c => (Char) ('0' + c % 10))
                .ToArray());

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读