如何拆分数字列表并在每个数字后添加“,”

时间:2015-05-13 08:45:35

标签: .net vb.net

我有电话号码列表,每个电话号码必须有10个号码,我希望简单的代码添加“,”每个电话号码后,我可以在短信应用程序中发送。

我有这样的方式:

0123456789

0123456789

0123456789

0123456789

0123456789

0123456789

我希望输出看起来像这样:

0123456789,0123456789,0123456789,0123456789,0123456789,0123456789

orig = "012345678901234567890123456789"
Dim res = Enumerable.Range(0,orig.Length\10).[Select](Function(i) orig.Substring(i*8,8))

2 个答案:

答案 0 :(得分:4)

所以你有一个包含所有数字的字符串?奇怪。然而....

Dim orig = "012345678901234567890123456789"
Dim allNumbers As New List(Of String)
For i As Int32 = 0 To orig.Length - 1 Step 10
    Dim number As String
    If i + 10 >= orig.Length Then
        number = orig.Substring(i)
    Else
        number = orig.Substring(i, 10)
    End If
    allNumbers.Add(number)
Next

现在您可以使用String.Join

Dim result = String.Join(",", allNumbers)  ' 0123456789,0123456789,0123456789

这是最有效的方法,也是可读的。如果你坚持使用LINQ方法,那么它是(method syntax ugly as always in VB.NET):

Dim numGroups = orig.
    Select(Function(chr, index) New With {.Char = chr, .Index = index}).
    GroupBy(Function(x) x.Index \ 10).
    Select(Function(g) String.Concat(g.Select(Function(x) x.Char)))
Dim result = String.Join(",", numGroups)

诀窍是按x.Index \ 10分组,这是VB.NET中的整数除法,小数部分被截断,因此它构建了十个组。

答案 1 :(得分:1)

String.join()函数可能是您正在寻找的函数。

请参阅the official documentation on MSDN website