VB6Parse / Library / String / trim_dollar

VB6 Library Reference

Trim$ Function

The Trim$ function in Visual Basic 6 returns a string with both leading and trailing spaces removed. The dollar sign ($) suffix indicates that this function always returns a String type, never a Variant.

Syntax

Trim$(string)

Parameters

Return Value

Returns a String with all leading and trailing space characters (ASCII 32) removed from string.

Behavior and Characteristics

Space Removal

Type Differences: Trim$ vs Trim

Common Usage Patterns

1. Clean User Input

Function CleanInput(userInput As String) As String
    CleanInput = Trim$(userInput)
End Function
Dim cleaned As String
cleaned = CleanInput("  Hello World  ")  ' Returns "Hello World"

2. Process Text File Lines

Function ReadCleanLine(fileNum As Integer) As String
    Dim rawLine As String
    Line Input #fileNum, rawLine
    ReadCleanLine = Trim$(rawLine)
End Function

3. Validate Non-Empty Input

Function IsValidInput(input As String) As Boolean
    IsValidInput = (Len(Trim$(input)) > 0)
End Function
If IsValidInput(txtName.Text) Then
    ' Process the input
Else
    MsgBox "Please enter a value"
End If

4. String Comparison

Function CompareValues(value1 As String, value2 As String) As Boolean
    ' Compare strings ignoring leading/trailing spaces
    CompareValues = (Trim$(value1) = Trim$(value2))
End Function

5. Database Field Cleaning

Function GetFieldValue(rs As Recordset, fieldName As String) As String
    If Not IsNull(rs.Fields(fieldName).Value) Then
        GetFieldValue = Trim$(rs.Fields(fieldName).Value & "")
    Else
        GetFieldValue = ""
    End If
End Function

6. Configuration File Parsing

Function ParseConfigLine(configLine As String) As String
    Dim equalPos As Integer
    equalPos = InStr(configLine, "=")
    If equalPos > 0 Then
        ParseConfigLine = Trim$(Mid$(configLine, equalPos + 1))
    Else
        ParseConfigLine = ""
    End If
End Function

7. Clean Array Elements

Sub CleanStringArray(arr() As String)
    Dim i As Integer
    For i = LBound(arr) To UBound(arr)
        arr(i) = Trim$(arr(i))
    Next i
End Sub

8. Form Input Processing

Sub ProcessForm()
    Dim userName As String
    Dim userEmail As String
    userName = Trim$(txtName.Text)
    userEmail = Trim$(txtEmail.Text)
    If Len(userName) > 0 And Len(userEmail) > 0 Then
        SaveUserData userName, userEmail
    End If
End Sub

9. CSV Field Processing

Function ParseCSVField(field As String) As String
    ' Remove quotes and trim spaces
    Dim cleaned As String
    cleaned = field
    If Left$(cleaned, 1) = """" Then cleaned = Mid$(cleaned, 2)
    If Right$(cleaned, 1) = """" Then cleaned = Left$(cleaned, Len(cleaned) - 1)
    ParseCSVField = Trim$(cleaned)
End Function

10. Search Query Preparation

Function PrepareSearchQuery(query As String) As String
    Dim cleaned As String
    cleaned = Trim$(query)
    ' Remove multiple spaces
    While InStr(cleaned, "  ") > 0
        cleaned = Replace$(cleaned, "  ", " ")
    Wend
    PrepareSearchQuery = cleaned
End Function

Best Practices

When to Use Trim$ vs LTrim$ vs RTrim$

Dim text As String
text = "  Hello  "
Debug.Print Trim$(text)   ' "Hello" (both sides trimmed)
Debug.Print LTrim$(text)  ' "Hello  " (left side only)
Debug.Print RTrim$(text)  ' "  Hello" (right side only)

Use for User Input Validation

Function ValidateInput(input As String) As Boolean
    ' Check if input is meaningful after trimming
    Dim cleaned As String
    cleaned = Trim$(input)
    If Len(cleaned) = 0 Then
        MsgBox "Input cannot be empty or only spaces"
        ValidateInput = False
    Else
        ValidateInput = True
    End If
End Function

Combine with Other String Functions

Function NormalizeText(text As String) As String
    Dim result As String
    result = Trim$(text)
    result = UCase$(result)  ' Convert to uppercase
    NormalizeText = result
End Function

Handle Null Values Safely

Function SafeTrim(value As Variant) As String
    If IsNull(value) Then
        SafeTrim = ""
    Else
        SafeTrim = Trim$(CStr(value))
    End If
End Function

Performance Considerations

' Efficient: single Trim$ call
Dim cleaned As String
cleaned = Trim$(input)
' Less efficient: two function calls
cleaned = LTrim$(RTrim$(input))
' Use Trim$ instead of the above

Common Pitfalls

1. Only Removes Spaces (ASCII 32)

Dim text As String
text = vbTab & "Hello" & vbTab  ' Tabs at both ends
' Trim$ does NOT remove tabs
Debug.Print Trim$(text)  ' Still has tabs!
' To remove all whitespace, use custom function
Function TrimAllWhitespace(s As String) As String
    Dim i As Integer, j As Integer
    ' Trim from left
    For i = 1 To Len(s)
        Select Case Mid$(s, i, 1)
            Case " ", vbTab, vbCr, vbLf
                ' Continue
            Case Else
                Exit For
        End Select
    Next i
    ' Trim from right
    For j = Len(s) To 1 Step -1
        Select Case Mid$(s, j, 1)
            Case " ", vbTab, vbCr, vbLf
                ' Continue
            Case Else
                Exit For
        End Select
    Next j
    If i <= j Then
        TrimAllWhitespace = Mid$(s, i, j - i + 1)
    Else
        TrimAllWhitespace = ""
    End If
End Function

2. Null Value Handling

' Trim$ with Null causes runtime error
Dim result As String
result = Trim$(nullValue)  ' ERROR if nullValue is Null
' Protect against Null
If Not IsNull(value) Then
    result = Trim$(value)
Else
    result = ""
End If

3. Empty String vs Spaces-Only String

Dim input As String
input = "     "  ' Only spaces
' Trim$ returns empty string
Debug.Print Len(Trim$(input))  ' 0
' Check for meaningful content
If Len(Trim$(input)) = 0 Then
    Debug.Print "No content"
End If

4. Database Field Assumptions

' Wrong: not handling Null
value = Trim$(rs!TextField)  ' May error if field is Null
' Better: handle Null explicitly
If IsNull(rs!TextField) Then
    value = ""
Else
    value = Trim$(rs!TextField & "")
End If

5. Case Sensitivity

' Trim$ does not change case
Debug.Print Trim$("  HELLO  ")  ' "HELLO" (not "hello")
' Combine with case conversion if needed
Debug.Print UCase$(Trim$("  hello  "))  ' "HELLO"
Debug.Print LCase$(Trim$("  HELLO  "))  ' "hello"

6. Non-Breaking Spaces

' Trim$ only removes regular spaces (ASCII 32)
' Non-breaking spaces (Chr$(160)) are NOT removed
Dim text As String
text = Chr$(160) & "Hello" & Chr$(160)
Debug.Print Trim$(text)  ' Still has Chr$(160) at both ends

Practical Examples

Processing INI File Values

Function GetINIValue(section As String, key As String, fileName As String) As String
    Dim fileNum As Integer
    Dim currentLine As String
    Dim inSection As Boolean
    Dim equalPos As Integer
    Dim lineKey As String
    fileNum = FreeFile
    Open fileName For Input As #fileNum
    While Not EOF(fileNum)
        Line Input #fileNum, currentLine
        currentLine = Trim$(currentLine)
        If currentLine = "[" & section & "]" Then
            inSection = True
        ElseIf Left$(currentLine, 1) = "[" Then
            inSection = False
        ElseIf inSection Then
            equalPos = InStr(currentLine, "=")
            If equalPos > 0 Then
                lineKey = Trim$(Left$(currentLine, equalPos - 1))
                If lineKey = key Then
                    GetINIValue = Trim$(Mid$(currentLine, equalPos + 1))
                    Close #fileNum
                    Exit Function
                End If
            End If
        End If
    Wend
    Close #fileNum
    GetINIValue = ""
End Function

Form Validation

Function ValidateForm() As Boolean
    Dim errors As String
    If Len(Trim$(txtName.Text)) = 0 Then
        errors = errors & "Name is required" & vbCrLf
    End If
    If Len(Trim$(txtEmail.Text)) = 0 Then
        errors = errors & "Email is required" & vbCrLf
    End If
    If Len(errors) > 0 Then
        MsgBox errors, vbExclamation
        ValidateForm = False
    Else
        ValidateForm = True
    End If
End Function

Clean Data Import

Sub ImportCSVData(fileName As String)
    Dim fileNum As Integer
    Dim currentLine As String
    Dim fields() As String
    Dim i As Integer
    fileNum = FreeFile
    Open fileName For Input As #fileNum
    While Not EOF(fileNum)
        Line Input #fileNum, currentLine
        fields = Split(currentLine, ",")
        ' Clean all fields
        For i = LBound(fields) To UBound(fields)
            fields(i) = Trim$(fields(i))
        Next i
        ' Process cleaned fields
        ProcessRecord fields
    Wend
    Close #fileNum
End Sub

Limitations

← Back to String | View all functions