在VB.NET中将String Builder转换为字符串数组

时间:2013-12-17 18:27:00

标签: c# asp.net vb.net

我有一个带复选框的RadComoboBox,我想用String Builder循环复选框。获取该格式的值后:{1,2,3,4}我想将其转换为该格式的stringArray(1,2,3,4) 任何人都可以告诉我如何做到这一点?

这是我的代码:

Dim sbPeopleTypes As New StringBuilder()
Dim colGroups As IList(Of RadComboBoxItem) = rcbFilterPersonType.CheckedItems
For Each item As RadComboBoxItem In colGroups
     sbPeopleTypes.Append(item.Value + ",")
Next

aspx代码:

<telerik:RadComboBox runat="server" 
                    CheckBoxes="true" 
                    ID="rcbFilterPersonType" 
                    EmptyMessage="Select Person Type" Enabled="True">
</telerik:RadComboBox>

1 个答案:

答案 0 :(得分:5)

您可以使用字符串的Split方法获取数组,如下所示:

Dim myArray() As String = sbPeopleTypes.ToString.Split(","c)

但是,除非您需要使用StringBuilder,否则出于其他原因,最好使用列表,如下所示:

Dim peopleTypes As New List(Of String)()
For Each item As RadComboBoxItem In colGroups
     peopleTypes.Add(item.Value)
Next

然后,如果你真的需要它作为一个数组,你可以像这样转换它:

Dim myArray() As String = peopleTypes.ToArray()

即使您确实需要将其格式化为逗号分隔字符串,您仍然可以轻松地从列表中构建它,而不是StringBuilder,如下所示:

Dim csv As String = String.Join(",", peopleTypes)

或者,由于RadComboBox.CheckedItems属性是IList(Of RadComboBoxItem),您可以使用Select LINQ扩展方法将值作为列表或数组获取,而不使用For循环,像这样:

Dim myArray() as String = rcbFilterPersonType.CheckedItems.Select(Function(x) x.Value).ToArray()