我有电话号码列表,每个电话号码必须有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))
答案 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()函数可能是您正在寻找的函数。