在数组[]或List中重复字符串
本文关键字:字符串 List 数组 | 更新日期: 2023-09-27 18:21:12
我有一个字符串,例如"DNA"和数组的长度/list=N。是否可以将字符串插入数组或list中,使其变为["D"、"N"、"a"、"D","N","a","D"answers"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;
}
}