2011-01-15 51 views
19

我完全不熟悉C#並且隨時學習。我遇到了問題,希望有經驗的程序員可以提供幫助。我已經將CheckedListBox添加到了我的表單中,並向其添加了6個項目的集合。我需要除了最後選擇的所有項目之外都放置一個逗號,所以我的問題是:我如何告訴C#不要在最後選擇的項目旁邊放置逗號?C#如何在每個單詞後面加一個逗號但列表中的最後一個

foreach (object itemChecked in RolesCheckedListBox.CheckedItems) 
{ 
    sw.Write(itemChecked.ToString() + ","); 
} 

感謝您收到的任何幫助! 丹

+0

我會建議使用字符串,而不是foreach循環,因爲在我的解決方案。 – Tillito

+0

在這看到更好的答案:http://stackoverflow.com/questions/11771741/how-to-remove-last-comma-from-query-c-sharp –

回答

6

改進示例的一種方式可以是:

var index = 0; 
foreach (object itemChecked in RolesCheckedListBox.CheckedItems) 
{ 
    if (index>0) sw.Write(","); 
    sw.Write(itemChecked.ToString()); 
    index++; 
} 

不優雅,但工作。

+2

謝謝你已經工作了一種享受! –

44

它可以通過string.Join()方法來完成:

string commaSeparated = string.Join(",", 
       RolesCheckedListBox.CheckedItems.Select(item => item.ToString()); 

例如:

string[] names = new []{ "a", "b"}; 
string separatedNames = string.Join(",", names); 

會導致該separatedNames"a,b"

+2

'Select'僅爲'IEnumerable '定義,因此您需要在CastledItems後面放置'Cast ()',因爲它只實現'IEnumerable'。 – Lee

+0

@Lee,好點,RolesCheckedListBox.CheckedItems.Cast ()。選擇(項目=> item.ToString())可能需要 – Elisha

+0

是的。也許我的解決方案是更好的可讀性,然後 – Tillito

4

您可以使用Join功能而不是lo oping:

sw.Write(string.Join(",", RolesCheckedListBox.CheckedItems)); 
0
foreach (object itemChecked in RolesCheckedListBox.Items) 
      { 
       if (itemChecked != RolesCheckedListBox.Items[RolesCheckedListBox.Items.Count - 1]) 
        sw.Write(itemChecked.ToString() + ","); 
      } 

這應該幫助你。另外,我只用了「Items」,你使用了CheckedItems。如果您只想遍歷檢查的項目,請將所有項目的實例更改爲CheckedItems。

+0

謝謝大家的快速反應,這已經工作了一種享受! –

1
  1. 使用LINQ
  2. 使用的string.join

如同將您的ListItemCollection到字符串數組:

public string ItemsToString(ListItemCollection items) 
{ 
    string[] stringArray = (from ListItem item in items where item.Selected select item.ToString()).ToArray(); 
    return String.Join(", ", stringArray); 
} 

你可以通過

sw.Write(ItemsToString(RolesCheckedListBox.CheckedItems)); 

或者用它如果你喜歡單身作業e行:

sw.Write(String.Join(", ", (from ListItem item in RolesCheckedListBox.CheckedItems select item.ToString()).ToArray())); 
+0

非常好!用兩行代碼解決領先的逗號問題! –

1

在.NET 4中,你可以使用靜態String.Join<T> Method (String, IEnumerable<T>)並打印連接的字符串。

否則,簡單的方法是在前面加上逗號的所有元素,但第一個:

bool shouldPrependComma = false; 
foreach (object itemChecked in RolesCheckedListBox.CheckedItems) 
{ 
    if (shouldPrependComma) sw.Write(","); 
    sw.Write(itemChecked.ToString()); 
    shouldPrependComma = true; 
} 
相關問題