Help and Support
 

powered byLive Search

How To Simulate Visual Basic 6.0 String Functions in VB5

Article ID:188007
Last Review:July 13, 2004
Revision:4.1
This article was previously published under Q188007

SUMMARY

Visual Basic version 6.0 introduces a number of new string functions to simplify string manipulation in your code. This article describes how the same functionality can be used with earlier versions of Visual Basic.

MORE INFORMATION

The following additional string functions are present in Visual Basic 6.0:
Function      Description
--------      -----------
Join          Used to join arrays elements.

Split         Split a string into a variant array.

InStrRev      Similar to InStr but searches from end of string.

Replace       To find a particular string and replace it.

Reverse       To reverse a string.
				

If these functions are coded and added in a module, all the above functions can be used in the project as if they are intrinsic functions.
1.Start a new project. Form1 is created by default.
2.Add a new module to the project and add the following code to the module:
      Option Explicit

      Public Function Join(source() As String, Optional _
            sDelim As String = " ") As String
      Dim sOut As String, iC As Integer
      On Error GoTo errh:
          For iC = LBound(source) To UBound(source) - 1
              sOut = sOut & source(iC) & sDelim
          Next
          sOut = sOut & source(iC)
          Join = sOut
          Exit Function
      errh:
          Err.Raise Err.Number
      End Function

      Public Function Split(ByVal sIn As String, Optional sDelim As _
            String, Optional nLimit As Long = -1, Optional bCompare As _
             VbCompareMethod = vbBinaryCompare) As Variant
          Dim sRead As String, sOut() As String, nC As Integer
          If sDelim = "" Then
              Split = sIn
          End If
          sRead = ReadUntil(sIn, sDelim, bCompare)
          Do
              ReDim Preserve sOut(nC)
              sOut(nC) = sRead
              nC = nC + 1
              If nLimit <> -1 And nC >= nLimit Then Exit Do
              sRead = ReadUntil(sIn, sDelim)
          Loop While sRead <> ""
          ReDim Preserve sOut(nC)
          sOut(nC) = sIn
          Split = sOut
      End Function

      Public Function ReadUntil(ByRef sIn As String, _
            sDelim As String, Optional bCompare As VbCompareMethod _
          = vbBinaryCompare) As String
          Dim nPos As String
          nPos = InStr(1, sIn, sDelim, bCompare)
          If nPos > 0 Then
              ReadUntil = Left(sIn, nPos - 1)
              sIn = Mid(sIn, nPos + Len(sDelim))
          End If
      End Function

      Public Function StrReverse(ByVal sIn As String) As String
          Dim nC As Integer, sOut As String
          For nC = Len(sIn) To 1 Step -1
          sOut = sOut & Mid(sIn, nC, 1)
          Next
          StrReverse = sOut
      End Function

      Public Function InStrRev(ByVal sIn As String, sFind As String, _
       Optional nStart As Long = 1, Optional bCompare As _
            VbCompareMethod = vbBinaryCompare) As Long
          Dim nPos As Long
          sIn = StrReverse(sIn)
          sFind = StrReverse(sFind)
          nPos = InStr(nStart, sIn, sFind, bCompare)
          If nPos = 0 Then
              InStrRev = 0
          Else
              InStrRev = Len(sIn) - nPos - Len(sFind) + 2
          End If
      End Function

      Public Function Replace(sIn As String, sFind As String, _
            sReplace As String, Optional nStart As Long = 1, _
            Optional nCount As Long = -1, Optional bCompare As _
            VbCompareMethod = vbBinaryCompare) As String

          Dim nC As Long, nPos As Integer, sOut As String
          sOut = sIn
          nPos = InStr(nStart, sOut, sFind, bCompare)
          If nPos = 0 Then GoTo EndFn:
          Do
              nC = nC + 1
              sOut = Left(sOut, nPos - 1) & sReplace & _
                 Mid(sOut, nPos + Len(sFind))
              If nCount <> -1 And nC >= nCount Then Exit Do
              nPos = InStr(nStart, sOut, sFind, bCompare)
          Loop While nPos > 0
      EndFn:
          Replace = sOut
      End Function

						
3.Add two CommandButtons to Form1. Add the following code to the General Declaration section of Form1:
      Option Explicit

      Dim MyArray(2) As String, MyStr As String, MyVar As Variant

      Private Sub Command1_Click()
          MyArray(0) = "item1"
          MyArray(1) = "item2"
          MyArray(2) = "item3"
          MyStr = Join(MyArray, ";")
          Debug.Print MyStr
      End Sub

      Private Sub Command2_Click()
          Dim i As Integer
          MyVar = Split(MyStr, ";")
          For i = LBound(MyVar) To UBound(MyVar)
          Debug.Print MyVar(i)
          Next
      End Sub

      Private Sub Form_Load()
          Command1.Caption = "Join"
          Command2.Caption = "Split"
      End Sub

						
4.Press the F5 key to run the project. Click on Join, and note in the debug window that the array elements are joined. Click on Split to split a string into a variant array.
5.Pause the project by pressing the CTRL+BREAK key combination or clicking the Pause button on the toolbar. Test the remaining functions by typing the following lines in the immediate window and verifying the results:
?instrrev("//drive/dir","/")
8

?strreverse("input string")
gnirts tupni

?replace("input string"," ", "-",4,1)
input-string
NOTE: The errors generated may not exactly coincide with those generated by the Visual Basic 6.0 intrinsic string functions.

APPLIES TO
Microsoft Visual Basic 5.0 Learning Edition
Microsoft Visual Basic 6.0 Learning Edition
Microsoft Visual Basic 5.0 Professional Edition
Microsoft Visual Basic 6.0 Professional Edition
Microsoft Visual Basic 5.0 Enterprise Edition
Microsoft Visual Basic 6.0 Enterprise Edition
Microsoft Visual Basic 4.0 Standard Edition
Microsoft Visual Basic 4.0 Professional Edition
Microsoft Visual Basic 4.0 Enterprise Edition

Back to the top

Keywords: 
kbhowto KB188007

Article Translations

 

Other Support Options

  • Need More Help?
    Contact a Support professional by E-mail, Online or Phone.
  • Customer Service
    For non-technical assistance with product purchases, subscriptions, online services, events, training courses, corporate sales, piracy issues, and more.
  • Newsgroups
    Pose a question to other users. Discussion groups and Forums about specific Microsoft products, technologies, and services.