17

私はこのような文字列を作ってみました:

[1][2][3][4][5][6][7][8][9][10]

このコードで:

string nums = "[" + string.Join("][", Enumerable.Range(1, 10)) + "]";

ただし、これはあまり見栄えがよくないので、string.Formatstring.Joinを組み合わせて、次のようにできるかどうか疑問に思いました。

string num = string.Join("[{0}]", Enumerable.Range(1, 10));

各アイテムを包み込むように。ただし、これは次のようになります。

1[{0}]2[{0}]3[{0}]4[{0}]5[{0}]6[{0}]7[{0}]8[{0}]9[{0}]10

これを行うためのより良い/より簡単な方法はありますか?


すべての解決策の中で、私はこれを好むと言わなければなりません

string s = string.Concat(Enumerable.Range(1, 4).Select(i => string.Format("SomeTitle: >>> {0} <<<\n", i)));

これ以上

string s2 = "SomeTitle: >>>" + string.Join("<<<\nSomeTitle: >>>", Enumerable.Range(1, 4)) + "<<<\n";

すべてのフォーマットは、複数ではなく1つの文字列で行われるためです。

4

5 に答える 5

26
string.Concat(Enumerable.Range(1,10).Select(i => string.Format("[{0}]", i)))
于 2012-04-27T08:44:16.833 に答える
15

このようなものが欲しかったのですが、フォーマット文字列とセパレータを入力する可能性があります。だからこれは私が思いついたものです:

public static string JoinFormat<T>(this IEnumerable<T> list, string separator,
                                   string formatString)
{
    formatString = string.IsNullOrWhiteSpace(formatString) ? "{0}": formatString;
    return string.Join(separator,
                       list.Select(item => string.Format(formatString, item)));
}

今、あなたは次のようなリストを作ることができます

[1]、[2]、[3]、[4]、[5]、[6]、[7]、[8]、[9]、[10]

を入力しnumbers.JoinFormat(", ", "[{0}]")

一方、を使用したConcatソリューションで"[{0}],")は、末尾にコンマが付きます。

空またはnull区切り文字を使用すると、リストが作成されます。

于 2012-11-15T09:54:52.127 に答える
1

あなたはおそらく次のようなLINQソリューションを探しています

string nums = String.Concat(Enumerable.Range(1, 10)
                                      .Select(i => string.Format("[{0}]", i)))
于 2012-04-27T08:42:02.973 に答える
1

各アイテムを連結String.Concatし、それらをまとめるために使用します。

string num =
  String.Concat(
    Enumerable.Range(1, 10).Select(n => "[" + n + "]")
  );

凝ったものにしたい場合は、数値と文字列配列を相互結合することができます。:)

string num =
  String.Concat(
    from n in Enumerable.Range(1, 10)
    from s in new string[] { "[", null, "]" }
    select s ?? n.ToString()
  );
于 2012-04-27T08:46:19.727 に答える
1
StringBuilder str = new StringBuilder();
for (int i = 1; i <= 10; i++)
    str.AppendFormat("[{0}]", i);

Console.WriteLine(str.ToString());

StringBuilderを使用して同じパターンを追加することをお勧めします。

于 2012-04-27T08:49:05.360 に答える