Here is the corrected code implemented in a console application.
Look at the comments for corrections.
Code:
Imports System.Text
Module Module1
Sub Main()
Do
Dim input As String = Console.ReadLine
If String.IsNullOrEmpty(input) Then
Exit Sub
End If
Dim strOutput As String = GetPigLatin(input)
Console.WriteLine(String.Format("The Pig Latin Translation is: {0}", strOutput))
Loop
End Sub
Private Function GetPigLatin(ByVal input As String) As String
Dim words As String() = input.Split(" ")
Dim output As New StringBuilder() 'StringBuilder is much faster than regular string concatenation.
For Each word In words
output.Append(GetPigLatinWord(word))
output.Append(" ")
Next
Return output.ToString() 'Get the final string from the StringBuilder
End Function
Private Function GetPigLatinWord(ByVal strInput As String) As String
Dim str1stCharacter As String = ""
Dim strOutput As String = ""
Dim intStringLength As Integer = 0
str1stCharacter = Microsoft.VisualBasic.Left(strInput, 1)
Select Case str1stCharacter.ToUpper()
Case "A", "E", "I", "O", "U"
strOutput = strInput & "WAY"
Case Else
'THIS IS WHAT I CHANGED. You were using fixed lengths to capture from each end of the word.
'That meant that only 5 char words would work with your implementation.
strOutput = strInput.Substring(1) & strInput.Substring(0, 1) & "AY"
End Select
Return strOutput.ToLower 'makes output prettier
End Function
End Module