在 array[] 或 List 中重复字符串

Repeat string inside an array[] or List

我有一个字符串,例如"DNA",array/list的长度=N。有没有办法把这个字符串插入到数组或列表中,使它变成["D", "N", "A", "D", "N", "A", "D", "N"]?我尝试了很多方法,但最后两个字母都没有。

我尝试将字符串转换为 char[],检查列表的长度是否小于 n,然后使用 .Take() 附加我需要的字符,但它不起作用。就算有,也显得有点笨拙。

int N = 7;
string str = "DNA";
var result = string.Concat(Enumerable.Repeat(str, N).SelectMany(x => x).Take(N));

var result = string.Concat(Enumerable.Repeat(str, N/str.Length + 1).SelectMany(x => x)
             .Take(N));

给你:)

 class Program
 {
    public static readonly string dnaString ="DNA";
    static void Main(string[] args)
    {
        int counter = 7;
        List<string> stringList = new List<string>();
        for(int i=0;i< counter;i++)
        {
            stringList.Add(dnaString[i % dnaString.Length].ToString());
        }


     }
   }

您可以使用 yield return 语句生成输入的无限序列,然后使用 Take:

将其切片到某处
int N = 10;
List<string> listStr = new List<string> { "D", "N", "A" };

List<string> result = Cycle(listStr).Take(N).ToList();


static IEnumerable<string> Cycle(IEnumerable<string> input)
{
    while(true)
    {
        foreach (var str in input)
           yield return str;
    }
}