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
| 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.
|
|