在数组[]或List中重复字符串

本文关键字:字符串 List 数组 | 更新日期: 2023-09-27 18:21:12

我有一个字符串,例如"DNA"和数组的长度/list=N。是否可以将字符串插入数组或list中,使其变为["D"、"N"、"a"、"D","N","a","D"answers"N"]?我试了很多方法,但最后两封信都没给我。

我尝试将字符串转换为char[],检查列表的长度是否为<n,然后使用.Take()来附加我需要的字符,但它不起作用。即使是这样,它看起来也有点笨拙。

在数组[]或List中重复字符串

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;
    }
}
相关文章: