42 lines
1.3 KiB
Plaintext
42 lines
1.3 KiB
Plaintext
Option Explicit On
|
|
Option Infer On
|
|
Option Strict On
|
|
|
|
Module Program
|
|
Function FormatEnumerable(source As IEnumerable(Of String)) As String
|
|
Dim res As New Text.StringBuilder("{")
|
|
|
|
Using en = source.GetEnumerator()
|
|
Dim moreThanOne As Boolean = False
|
|
Dim nxt = If(en.MoveNext(), en.Current, String.Empty)
|
|
|
|
Do While en.MoveNext()
|
|
If moreThanOne Then res.Append(", ")
|
|
moreThanOne = True
|
|
|
|
res.Append(nxt)
|
|
nxt = en.Current
|
|
Loop
|
|
|
|
Dim lastItem = If(moreThanOne, " and ", "") & nxt
|
|
Return res.ToString() & lastItem & "}"
|
|
End Using
|
|
End Function
|
|
|
|
Function FormatArray(source As String()) As String
|
|
Select Case source.Length
|
|
Case 0 : Return "{}"
|
|
Case 1 : Return "{" & source(0) & "}"
|
|
Case Else : Return "{" & String.Join(", ", source.Take(source.Length - 1)) & " and " & source(source.Length - 1) & "}"
|
|
End Select
|
|
End Function
|
|
|
|
Sub Main()
|
|
Dim cases As String()() = {Array.Empty(Of String), New String() {"ABC"}, New String() {"ABC", "DEF"}, New String() {"ABC", "DEF", "G", "H"}}
|
|
For Each c In cases
|
|
Console.WriteLine(FormatArray(c))
|
|
Console.WriteLine(FormatEnumerable(c))
|
|
Next
|
|
End Sub
|
|
End Module
|