簡體   English   中英

string.Format 與 string.Join

[英]string.Format with string.Join

我試過制作這樣的字符串:

[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";

因為所有格式都是在一個字符串中完成的,而不是多個。

string.Concat(Enumerable.Range(1,10).Select(i => string.Format("[{0}]", i)))

我想要這樣的東西,但可以輸入格式字符串和分隔符。 所以這就是我想出的:

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}]")

而帶有"[{0}],")Concat解決方案將有一個尾隨逗號。

null分隔符或null分隔符會生成您的列表。

您可能正在尋找 LINQ 解決方案,例如

string nums = String.Concat(Enumerable.Range(1, 10)
                                      .Select(i => string.Format("[{0}]", i)))

我只是連接每個項目,並使用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()
  );
StringBuilder str = new StringBuilder();
for (int i = 1; i <= 10; i++)
    str.AppendFormat("[{0}]", i);

Console.WriteLine(str.ToString());

我的建議是使用 StringBuilder 來附加相同的模式。

string.Join(',', Enumerable.Range(1, 10).Select(i => string.Format("'{0}'", i)))

字符串連接可能是比 Concat 更好的選擇

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM