我希望在不做的情况下轻松生成500个字符:
String range = "0123456789101112131415...";
我想要一个500字符的精确字符串。
我该怎么做?
Enumerable.Range(0,500).Select( c => c.ToString());
无效,因为
数字123是3个字符而不是1,其中存在问题。
答案 0 :(得分:11)
如果您不关心哪些字符,那么您可以使用String构造函数:
String s = new String('0', 500);
这将为您提供一个500“0”的字符串。或500 X的:
String s = new String('X', 500);
答案 1 :(得分:2)
您想使用Aggregate:
string range = Enumerable.Range(0,500)
.Select(x => x.ToString()).Aggregate((a, b) => a + b);
Console.WriteLine(range);
这将为您提供从0到500的串联数字字符串。像这样:01234567891011121314151617...
如果你需要从这个大字符串中取出500个字符,你可以进一步使用子字符串。
string range = Enumerable.Range(0,500)
.Select(x => x.ToString()).Aggregate((a, b) => a + b);
Console.WriteLine(range.Substring(0, 500));
答案 2 :(得分:1)
这应该可以解决问题。
var range = new string(String.Concat(Enumerable.Range(0, 500)
.Select(c => c.ToString()))
.Take(500).ToArray()
);
答案 3 :(得分:1)
LINQ很漂亮,但你总是需要它......:
static string NumString(int length) {
var s = "";
var i = 0;
while (s.Length < length) {
s += i.ToString();
i++;
}
return s.Substring(0, length);
}
或使用Aggregate的变体:
var str = Enumerable.Range(0, 500)
.Aggregate("", (s, next) => s += next.ToString(),
s => s.Substring(0, 500));
答案 4 :(得分:0)
new string(Enumerable.Range(0,500).SelectMany(x => x.ToString()).Take(500).ToArray())
LINQ最简单的方法。由于字符串在技术上是可枚举的(char []),因此您可以使用SelectMany(它将多个Enumerables并展平为单个集合),然后使用Take(500)仅获取500个字符,调用ToArray以获取char []实例化一个新字符串。
答案 5 :(得分:0)
还有一个选项,不是原始问题的请求输出 - 数字是随机的而不是增加的 - 但相当简洁(我知道,OP不需要一串随机数字但是这是任何一种情况。)
var rand = new Random();
string.Join("",Enumerable.Repeat(0, 500).Select(i => rand.Next(10)));