2012-04-27 75 views
9

我試着做一個像這樣的字符串:的String.format用的string.join

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

有了這個代碼:

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

這不過看上去真的很好,所以我想知道如果我可以的string.join結合的String.format,八九不離十是這樣的:但是

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

爲什麼你以前的解決方案不好 - 它對我來說看起來很完美! :) – 2012-04-27 08:42:05

回答

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

只是一個側面說明:這隻適用於框架> = 4。對於舊版本,您需要將Concat參數轉換爲數組,例如添加'.ToArray()' – digEmAll 2012-04-27 08:51:24

1

您可能正在尋找一個LINQ的解決方案,如

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

道歉殘暴的格式。

編輯:通過花錢的答案被提醒後更換String.JoinString.Concat

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() 
); 
1
StringBuilder str = new StringBuilder(); 
for (int i = 1; i <= 10; i++) 
str.AppendFormat("[{0}]", i); 

Console.WriteLine(str.ToString()); 

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

11

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

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],通過輸入numbers.JoinFormat(", ", "[{0}]") [9] [10]

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

一個空的或null分隔符產生你的列表。