Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'https://rosettacode.org/wiki/Align_columns
- Imports System
- Module Program
- Sub Main()
- Dim siCount, siCounter, siLength As Integer
- Dim siLongest As Short = -1
- Dim sRows As New List(Of String)
- Dim sLine As New List(Of String)
- Dim sTemp As String = ""
- Dim sAlign As String = ""
- Dim sInput As String = "Given$a$text$file$of$many$lines, $where$fields$within$a$line$" & "\n" &
- "are$delineated$by$a$single$ 'dollar'$character,$write$a$program" & "\n" &
- "that$aligns$each$column$of$fields$by$ensuring$that$words$in$each$" & "\n" &
- "column$are$separated$by$at$least$one$space." & "\n" &
- "Further, $allow$for$each$word$in$a$column$to$be$either$left$" & "\n" &
- "justified, $right$justified, $or$center$justified$within$its$column."
- For Each sTemp In Split(sInput, "\n")
- sLine.Add(sTemp)
- Next
- For siCount = 0 To sLine.Count - 1
- For Each sTemp In Split(sLine(siCount), "$")
- siLength = Len(sTemp)
- If siLength > siLongest Then siLongest = siLength
- sRows.Add(Trim(sTemp))
- Next
- sRows.Add("\n")
- Next
- For siCounter = 0 To 2
- For Each sTemp In sRows
- If sTemp = "\n" Then
- Console.WriteLine()
- Continue For
- End If
- If siCounter = 0 Then Console.Write(sTemp & Space(siLongest - Len(sTemp)))
- If siCounter = 1 Then Console.Write(Space(siLongest - Len(sTemp)) & sTemp)
- If siCounter = 2 Then
- siCount = Math.Floor((siLongest - Len(sTemp)) / 2)
- sAlign = Space(siCount) & sTemp & Space(siCount)
- If Len(sAlign) < siLongest Then sAlign &= " "
- Console.Write(sAlign)
- End If
- Next
- Console.WriteLine()
- Next
- End Sub
- End Module
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement