使用Linq创建长度为10的两个字母的序列

本文关键字:两个 创建 Linq 使用 | 更新日期: 2023-09-27 18:16:36

我一直在尝试根据长度创建两个字母的序列。我知道在python中有一个类似的问题,两个字母和固定长度的字符串,但它略有不同。

[编辑]

的例子Abababababa是a, b,固定长度11的字符串序列

我想出了这个快速的解决方案,但我觉得有一个更聪明的方法来做到这一点。固定长度可以是偶数也可以是奇数。例如,

string b =String.Concat(Enumerable.Repeat(String.Concat("a", "b"), 11));
Console.WriteLine(b.Substring(0,11));

我如何做到这一点?

使用Linq创建长度为10的两个字母的序列

"Best"可能是char[]StringBuilder加上for环,但这里有一些更短的方法:

string a = new string('a', 11).Replace("aa", "ab");
string b = string.Concat(Enumerable.Range(0, 11).Select(i => "ab"[i & 1]));
string c = new StringBuilder().Insert(0, "ab", ((11 + 1) / 2)).ToString(0, 11);

我仍然不能100%确定我明白你在问什么。但是,根据您目前所写的内容,我认为这将满足您的要求:

string Repeat(string input, int length)
{
    return new string(
        Enumerable.Range(0, length).Select(i => input[i % length]).ToArray());
}

被称为:

string result = Repeat("ab", 10);

这是你想要的吗?我困惑。

string b = String.Concat(Enumerable.Repeat(String.Concat("a", "b"), 5));