3

次のことを行わずに、簡単な方法で500文字を生成したいと思います。

String range = "0123456789101112131415..."; 

500文字の正確な文字列が必要です。

どうやってやるの?

Enumerable.Range(0,500).Select( c => c.ToString());

役に立たないので

数123は1ではなく3文字であり、そこに問題があります。

4

6 に答える 6

13

どの文字を気にしない場合は、Stringコンストラクターを使用できます。

String s = new String('0', 500);

これにより、500個の「0」の文字列が得られます。または500Xの場合:

String s = new String('X', 500);
于 2012-11-12T19:23:57.643 に答える
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));
于 2012-11-12T19:25:58.030 に答える
1

これでうまくいくはずです。

var range = new string(String.Concat(Enumerable.Range(0, 500)
                                               .Select(c => c.ToString()))
                             .Take(500).ToArray()
                      );
于 2012-11-12T19:20:11.723 に答える
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));
于 2012-11-12T19:23:58.223 に答える
0
new string(Enumerable.Range(0,500).SelectMany(x => x.ToString()).Take(500).ToArray())

LINQを使用した最も簡単な方法。文字列は技術的には列挙可能(char [])であるため、SelectMany(複数のEnumerableを取得して単一のコレクションにフラット化)に続いてTake(500)を使用して500文字のみを取得し、ToArrayを呼び出してchar[]を取得できます。新しい文字列をインスタンス化します。

于 2012-11-12T19:45:24.287 に答える
0

もう1つのオプションは、元の質問から要求された出力ではなく、数字は増加するのではなくランダムですが、かなり簡潔です(OPはランダムな数字の文字列を必要としませんでしたが、いずれの場合もここにあります)。

var rand = new Random();
string.Join("",Enumerable.Repeat(0, 500).Select(i => rand.Next(10)));
于 2013-11-07T03:49:30.717 に答える