If you are interested in advertising in COTW (our rates are VERY reasonable), please email us at sponsor@codeoftheweek.com
The source code in this issue is designed for Visual Basic 3.0 and higher.
This issue introduces a subroutine to extract a particular word out of a string based on its position in the string. It allows you to ask for word number X and the subroutine will search through the source string and return word X based on the delimiter you supply. This is useful for parsing command line parameters or doing data importing.
Function GetWord(sData As String, iWord As Integer, sDelim As String) As String
This function returns the word at position iWord in sData using sDelim as the delimiter.
Below are two examples of how this function works.
sSource = "This is a test"
MsgBox GetWord(sSource, 1, " ") ' Will return "This"
MsgBox GetWord(sSource, 4, " ") ' Will return "test"
sSource = "12,Smith,123 Main St, 11000"
MsgBox "Name: " & GetWord(sSource, 2, ",")
MsgBox "Address: " & GetWord(sSource, 3, ",")
Just paste this code into any module and change the name to basStrings. If you have one of our previous string handling routines, place it in there.
'----------------------------------------------------------------------
'
' Module Name: basStrings
' Written By: C&D Programming Corp.
' Create Date: 5/7/97
' Update Date: 3/10/99
' Copyright: Copyright 1998 by C&D Programming Corp. Source
' code may not be reproduced except for use in a
' compiled executable. All rights reserved. If
' you would like to reprint any or all of this
' code please email us at info@codeoftheweek.com
' Changes: Now supports a delimiters greater than a single
' character.
'----------------------------------------------------------------------
Function GetWord(sData As String, iWord As Integer, sDelim As String) As String
Dim iPos As Long
Dim iPos2 As Long
Dim iCount As Long
On Error GoTo GetWordErr
iPos = InStr(sData, sDelim)
If iPos = 0 Then
' if only first word requested then return whole string since
' delimiter was not found. If a word number greater than
' one was asked for, we have not found it, so return an empty
' string.
If iWord = 1 Then
GetWord = sData
Else
GetWord = ""
End If
Exit Function
End If
' if we got here we are at word number 2.
iCount = 2
' keep search until we find the word number we
' want to return.
While iCount < iWord
iPos = InStr(iPos + Len(sDelim), sData, sDelim)
If iPos = 0 Then
GetWord = ""
Exit Function
End If
iCount = iCount + 1
Wend
' we should never need this case since it should be
' covered in the very first If statement, but, just in case
' something unexpected happens
If iWord = 1 Then
If iPos = 0 Then
GetWord = sData
Else
GetWord = Mid$(sData, 1, iPos - 1)
End If
Else
' extract the word we want based on the occurence of
' the next delimiter, if there are no more delimiters, return
' the rest of the string, otherwise just return the delimited
' word.
iPos2 = InStr(iPos + 1, sData, sDelim)
If iPos2 = 0 Then
GetWord = Mid$(sData, iPos + Len(sDelim))
Else
GetWord = Mid$(sData, iPos + Len(sDelim), iPos2 - iPos - Len(sDelim))
End If
End If
Exit Function
GetWordErr:
Err.Raise Err.Number, "GetWord", Err.Description
End Function
That concludes this issue of COTW. We hope you find the source code useful in your development.
The below describes the ways you can supply us some feedback about COTW. We would like to see our members help mold COTW into the best Visual Basic source code resource available. But to do that we need your feedback about what you like and what you do not like about COTW.
If you have any suggestions for topics you would like to see covered or questions about this issue, please email them to info@codeoftheweek.com or use online feedback form at http://www.codeoftheweek.com/feedback.html.
If you have any source code you would like to submit for possible inclusion in COTW, please fill out our online submission form at http://www.codeoftheweek.com/submission.html.
Thank you for trying Code of the Week for Visual Basic.
Your free trial expires after you receive your fourth issue. If you want to continue to receive Code of the Week you can get 52 issues of COTW for only $19.95. This is a full year of Visual Basic source code and information to help with all your development. So don't wait, subscribe now! The quickest way to subscribe is to jump to our online order form at http://www.codeoftheweek.com/order.html