使用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));
我如何做到这一点?
"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));