InstrWordEx – Find a whole word, with your choice of delimiters

'------------------------------------------------------------------------' This enum is used by both InstrWordEx and ReplaceWordEx'' It uses a binary value to determine what separator characters are allowed' bit 0 = allow spaces' bit 1 = allow symbols' bit 2 = allow control chars' bit 3 = allow digits' If all are excluded (ie a value of 0) then this means char must match a ' special separator provided by callerEnum sepType    specialSep = 0                  'binary 0000 = words are ONLY separated by                                     ' a specified separator    spacesOnly = 1                  'binary 0001 = words must be separated By                                     ' spaces    spacesAndSymbols = 3            'binary 0011 = words must be separated By                                     ' spaces Or symbols    spacesSymbolsAndCtrl = 7        'binary 0111 = words are separated by                                     ' spaces, symbols or ctrl chars    spacesSymbolsCtrlAndDigits = 15 'binary 1111 = words are separated by                                     ' anything but lettersEnd Enum' Return the next occurrence of a whole word'' Based on InstrWord function from VB2TheMax - www.vb2themax.com'' Changes from VB2TheMax function were made by Peter Stubbs to allow ' specification of' what constitutes a separator between words''---------------------------------------------------------------------------'Contact Peter at [email protected]' http://users.hunterlink.net.au/~dgps'---------------------------------------------------------------------------'' Choices for separator are as described above for the sepType enum'' Examples:' pos = InstrWordEx(1,"This is a string","is",vbTextCompare)'   returns 6 in pos since there is a word "is" preceded and followed by a Space'' pos = InstrWordEx(1,"This-is-a-string","is",vbTextCompare)'  returns 6 in pos since there is a word "is" preceded and followed by a symbol'' pos = InstrWordEx(1,"This-is-a-string","is",vbTextCompare,spacesOnly)'   returns 0 in pos since there are no occurences of "is" preceded and ' followed by a space'' pos = InstrWordEx(1,"This is a list of 310 things","31",vbTextCompare)'  returns 19 in pos since the digits 31 are preceded by a space and followed ' by a digit'  which is, by default, considered a valid separator'' pos = InstrWordEx(1,"This is a list of 310 ' things","31",vbTextCompare,spacesAndSymbols)'  returns 0 in pos since this specifies spaces and symbols (but not digits) ' are valid separators'' pos = InstrWordEx(1,"This/is/a/string","is",vbTextCompare,specialSep,"/")'   returns 6 in pos since the word "is" is both preceded and followed by /'Function InstrWordEx(Start As Long, Source As String, Find As String, _    compareMethod As VbCompareMethod, Optional separatorType As sepType = _    spacesSymbolsCtrlAndDigits, Optional Separator As String = vbNullString) As _    Long    Dim index As Long    Dim charcode As Integer    Dim separatorInvalid As Boolean    ' assume the search fails    InstrWordEx = 0    index = Start - 1    Do        ' search the next occurrence, exit if not found        index = InStr(index + 1, Source, Find, compareMethod)        If index = 0 Then Exit Function        If index > 1 Then            charcode = Asc(UCase$(Mid$(Source, index - 1, 1)))        Else            charcode = 32        End If        ' check that it is preceded by a valid separator        If IsValidChar(charcode, separatorType, Separator) Then            ' check that it is followed by a valid separator            charcode = Asc(UCase$(Mid$(Source, index + Len(Find), 1)) & " ")            If IsValidChar(charcode, separatorType, Separator) Then                InstrWordEx = index                Exit Function            End If        End If    LoopEnd Function'This function determines if the character value in char is an acceptable ' separator of the'type specified by separatorType'The function is used by both InstrWordEx and ReplaceWordExPrivate Function IsValidChar(char As Integer, separatorType As sepType, _    Separator As String)    Dim charType As Integer    'Ctrl are chars in charType 0-31    'Spaces and symbols are chars in charType 32-47, 58-64 and 91-255    'Digits are chars in charType 48-57    If separatorType = specialSep Then        IsValidChar = (char = Asc(UCase$(Separator)))        Exit Function    End If    'Determine charType that char falls in    Select Case char         Case Is < 32 '0-32 = ctrl            charType = 4 '0100 binary         Case 32 'space            charType = 1 '0001 binary         Case Is < 48, Is > 90 '32-48 or 91-255 = symbols (first range)            charType = 2 '0010 binary         Case Is < 58 '48-57 = digits            charType = 8 '1000 binary         Case Is < 65 '58-64 = symbols (second range)            charType = 2 '0010 binary        Case Else 'it's a letter            charType = 0 '0000 binary    End Select    IsValidChar = Not ((charType And separatorType) = 0)End Function

Share the Post:
Share on facebook
Share on twitter
Share on linkedin

Overview

The Latest

microsoft careers

Top Careers at Microsoft

Microsoft has gained its position as one of the top companies in the world, and Microsoft careers are flourishing. This multinational company is efficiently developing popular software and computers with other consumer electronics. It is a dream come true for so many people to acquire a high paid, high-prestige job

your company's audio

4 Areas of Your Company Where Your Audio Really Matters

Your company probably relies on audio more than you realize. Whether you’re creating a spoken text message to a colleague or giving a speech, you want your audio to shine. Otherwise, you could cause avoidable friction points and potentially hurt your brand reputation. For example, let’s say you create a

chrome os developer mode

How to Turn on Chrome OS Developer Mode

Google’s Chrome OS is a popular operating system that is widely used on Chromebooks and other devices. While it is designed to be simple and user-friendly, there are times when users may want to access additional features and functionality. One way to do this is by turning on Chrome OS