یک Extension Method برای String

این تابع کلمه ای رو که در رشته ویرایش کردید رو بر می گردونه: و با وجود دو ورودی قابل ارجاع sIndex و eIndex به برنامه نویس این امکان رو می ده تا بتونه خارج از متد شماره Index شروع و پایان کلمه در متن رو بدست بیاره.


''' <summary>
''' Get Current Changed Word
''' </summary>
''' <param name="str"></param>
''' <param name="Position">Start Position to check(e.x. Console.CursorLeft)</param>
''' <param name="sIndex">Referenced Start Index</param>
''' <param name="eIndex">Referenced End Index</param>
''' <returns></returns>
''' <remarks></remarks>
<Extension()> Function CurrentWord(str As String, Position As Integer, Optional ByRef sIndex% = 0, Optional ByRef eIndex% = 0) As String
Dim StartIndex As Integer, EndIndex As Integer
If str.Substring(Position).Length = 0 Then Return ""
str = str.TrimEnd
'Debug.Print("CurrentWord Position: {0}", Position)
For i = Position To 0 Step -1
If str(i).CompareTo(" "c) = 0 Then
StartIndex = i
GoTo EndIndex
End If
Next
StartIndex = 0
EndIndex: 'Debug.Print("StartIndex: {0}", StartIndex)
For i = Position To str.Length - 1 Step 1
If str(i).CompareTo(" "c) = 0 Then
EndIndex = i
GoTo ReturnValue
End If
Next
EndIndex = str.Length - 1
ReturnValue: 'Debug.Print("EndIndex: {0}", EndIndex)
sIndex = StartIndex
eIndex = EndIndex
Dim Len% = (EndIndex - StartIndex) + 1
'Debug.Print("Word: {0}", str.Substring(StartIndex, Len))
Return str.Substring(StartIndex, Len)
End Function


اگه روش بهتری دارید یا اگه خطایی داره در همین تاپیک مطرح کنید.