VB6Parse / Library / String / ucase

VB6 Library Reference

VB6 UCase Function

The UCase function returns a String that has been converted to uppercase.

Syntax

UCase(string)

Parameters

Returns

Returns a Variant (String) containing the specified string converted to uppercase. Only lowercase letters are converted to uppercase; all uppercase letters and non-letter characters remain unchanged.

Remarks

The UCase function converts lowercase letters to uppercase:

UCase vs UCase$

Locale Considerations

Typical Uses

  1. Case-Insensitive Comparison: Normalize strings before comparison
  2. User Input Normalization: Convert user input to consistent case
  3. Data Validation: Standardize data before validation or storage
  4. Display Formatting: Format text for display purposes (headings, labels)
  5. String Matching: Prepare strings for case-insensitive searches
  6. Database Queries: Normalize search terms
  7. File Processing: Standardize file names or extensions
  8. Code Generation: Create uppercase identifiers or constants

Basic Examples

Example 1: Simple Conversion

Dim result As String

result = UCase("Hello World")
' result = "HELLO WORLD"

result = UCase("abc123xyz")
' result = "ABC123XYZ"

result = UCase("ALREADY UPPERCASE")
' result = "ALREADY UPPERCASE"

Example 2: Case-Insensitive Comparison

Function EqualsIgnoreCase(str1 As String, str2 As String) As Boolean
EqualsIgnoreCase = (UCase$(str1) = UCase$(str2))
End Function

' Usage:
If EqualsIgnoreCase(userInput, "YES") Then
ProcessConfirmation
End If

Example 3: Normalize User Input

Sub ProcessCommand(command As String)
Select Case UCase$(Trim$(command))
Case "SAVE"
SaveData
Case "LOAD"
LoadData
Case "EXIT"
CloseApplication
Case Else
MsgBox "Unknown command"
End Select
End Sub

Example 4: File Extension Check

Function IsImageFile(fileName As String) As Boolean
Dim ext As String
ext = UCase$(Right$(fileName, 4))

IsImageFile = (ext = ".JPG" Or ext = ".PNG" Or ext = ".GIF" Or ext = ".BMP")
End Function

Common Patterns

Pattern 1: Case-Insensitive String Comparison

Function CompareIgnoreCase(str1 As String, str2 As String) As Boolean
CompareIgnoreCase = (UCase$(str1) = UCase$(str2))
End Function

Pattern 2: Normalize Database Input

Function NormalizeForDatabase(value As String) As String
NormalizeForDatabase = UCase$(Trim$(value))
End Function

Pattern 3: Case-Insensitive Contains

Function ContainsIgnoreCase(source As String, searchTerm As String) As Boolean
ContainsIgnoreCase = (InStr(UCase$(source), UCase$(searchTerm)) > 0)
End Function

Pattern 4: Validate Yes/No Response

Function IsYesResponse(response As String) As Boolean
Dim normalized As String
normalized = UCase$(Trim$(response))
IsYesResponse = (normalized = "Y" Or normalized = "YES")
End Function

Pattern 5: Case-Insensitive StartsWith

Function StartsWithIgnoreCase(str As String, prefix As String) As Boolean
StartsWithIgnoreCase = (UCase$(Left$(str, Len(prefix))) = UCase$(prefix))
End Function

Pattern 6: Format Heading Text

Function FormatHeading(text As String) As String
FormatHeading = UCase$(text)
End Function

Pattern 7: Normalize Array Elements

Sub NormalizeArray(arr() As String)
Dim i As Long
For i = LBound(arr) To UBound(arr)
arr(i) = UCase$(arr(i))
Next i
End Sub

Pattern 8: Case-Insensitive Search in Array

Function FindInArray(arr() As String, searchValue As String) As Long
Dim i As Long
Dim searchUpper As String

searchUpper = UCase$(searchValue)

For i = LBound(arr) To UBound(arr)
If UCase$(arr(i)) = searchUpper Then
FindInArray = i
Exit Function
End If
Next i

FindInArray = -1 ' Not found
End Function

Pattern 9: Create Acronym

Function CreateAcronym(phrase As String) As String
Dim words() As String
Dim i As Integer
Dim result As String

words = Split(phrase, " ")
result = ""

For i = LBound(words) To UBound(words)
If Len(words(i)) > 0 Then
result = result & UCase$(Left$(words(i), 1))
End If
Next i

CreateAcronym = result
End Function

Pattern 10: Safe Null-Handling Comparison

Function SafeCompareIgnoreCase(str1 As Variant, str2 As Variant) As Boolean
If IsNull(str1) Or IsNull(str2) Then
SafeCompareIgnoreCase = False
Else
SafeCompareIgnoreCase = (UCase(str1) = UCase(str2))
End If
End Function

Advanced Usage

Example 1: Case-Insensitive Dictionary Class

' Class: CaseInsensitiveDictionary
' Dictionary with case-insensitive key lookup
Option Explicit

Private m_Items As Collection

Private Sub Class_Initialize()
Set m_Items = New Collection
End Sub

Public Sub Add(key As String, value As Variant)
On Error Resume Next

If IsObject(value) Then
m_Items.Add value, UCase$(key)
Else
m_Items.Add value, UCase$(key)
End If

If Err.Number <> 0 Then
Err.Raise 457, , "Key already exists: " & key
End If
End Sub

Public Function Item(key As String) As Variant
On Error Resume Next

If IsObject(m_Items(UCase$(key))) Then
Set Item = m_Items(UCase$(key))
Else
Item = m_Items(UCase$(key))
End If

If Err.Number <> 0 Then
Err.Raise 5, , "Key not found: " & key
End If
End Function

Public Function Exists(key As String) As Boolean
On Error Resume Next
Dim test As Variant
test = m_Items(UCase$(key))
Exists = (Err.Number = 0)
End Function

Public Sub Remove(key As String)
On Error Resume Next
m_Items.Remove UCase$(key)
If Err.Number <> 0 Then
Err.Raise 5, , "Key not found: " & key
End If
End Sub

Public Property Get Count() As Long
Count = m_Items.Count
End Property

Example 2: String Comparison Utilities Module

' Module: StringComparisonUtils
' Case-insensitive string comparison utilities
Option Explicit

Public Function EqualsIgnoreCase(str1 As String, str2 As String) As Boolean
EqualsIgnoreCase = (UCase$(str1) = UCase$(str2))
End Function

Public Function StartsWithIgnoreCase(str As String, prefix As String) As Boolean
If Len(prefix) > Len(str) Then
StartsWithIgnoreCase = False
Else
StartsWithIgnoreCase = (UCase$(Left$(str, Len(prefix))) = UCase$(prefix))
End If
End Function

Public Function EndsWithIgnoreCase(str As String, suffix As String) As Boolean
If Len(suffix) > Len(str) Then
EndsWithIgnoreCase = False
Else
EndsWithIgnoreCase = (UCase$(Right$(str, Len(suffix))) = UCase$(suffix))
End If
End Function

Public Function ContainsIgnoreCase(source As String, searchTerm As String) As Boolean
ContainsIgnoreCase = (InStr(1, source, searchTerm, vbTextCompare) > 0)
End Function

Public Function IndexOfIgnoreCase(source As String, searchTerm As String, _
Optional startPos As Long = 1) As Long
IndexOfIgnoreCase = InStr(startPos, source, searchTerm, vbTextCompare)
End Function

Public Function ReplaceIgnoreCase(source As String, findText As String, _
replaceText As String) As String
ReplaceIgnoreCase = Replace(source, findText, replaceText, 1, -1, vbTextCompare)
End Function

Public Function CompareIgnoreCase(str1 As String, str2 As String) As Integer
If UCase$(str1) < UCase$(str2) Then
CompareIgnoreCase = -1
ElseIf UCase$(str1) > UCase$(str2) Then
CompareIgnoreCase = 1
Else
CompareIgnoreCase = 0
End If
End Function

Example 3: Text Normalizer Class

' Class: TextNormalizer
' Normalizes text for consistent processing
Option Explicit

Public Enum NormalizationMode
nmUpperCase = 0
nmLowerCase = 1
nmTrimmed = 2
nmUpperCaseTrimmed = 3
nmLowerCaseTrimmed = 4
End Enum

Public Function Normalize(text As String, mode As NormalizationMode) As String
Select Case mode
Case nmUpperCase
Normalize = UCase$(text)
Case nmLowerCase
Normalize = LCase$(text)
Case nmTrimmed
Normalize = Trim$(text)
Case nmUpperCaseTrimmed
Normalize = UCase$(Trim$(text))
Case nmLowerCaseTrimmed
Normalize = LCase$(Trim$(text))
Case Else
Normalize = text
End Select
End Function

Public Function NormalizeArray(arr() As String, mode As NormalizationMode) As String()
Dim result() As String
Dim i As Long

ReDim result(LBound(arr) To UBound(arr))

For i = LBound(arr) To UBound(arr)
result(i) = Normalize(arr(i), mode)
Next i

NormalizeArray = result
End Function

Public Function NormalizeForComparison(text As String) As String
' Remove extra spaces and convert to uppercase
Dim temp As String
temp = Trim$(text)

' Replace multiple spaces with single space
Do While InStr(temp, "  ") > 0
temp = Replace(temp, "  ", " ")
Loop

NormalizeForComparison = UCase$(temp)
End Function

Example 4: Command Parser Module

' Module: CommandParser
' Parses and processes user commands
Option Explicit

Public Function ParseCommand(commandLine As String, command As String, _
arguments() As String) As Boolean
Dim parts() As String
Dim i As Integer

commandLine = Trim$(commandLine)
If Len(commandLine) = 0 Then
ParseCommand = False
Exit Function
End If

parts = Split(commandLine, " ")
command = UCase$(parts(0))

If UBound(parts) > 0 Then
ReDim arguments(0 To UBound(parts) - 1)
For i = 1 To UBound(parts)
arguments(i - 1) = parts(i)
Next i
Else
ReDim arguments(0 To -1) ' Empty array
End If

ParseCommand = True
End Function

Public Function IsValidCommand(command As String, validCommands() As String) As Boolean
Dim i As Long
Dim cmdUpper As String

cmdUpper = UCase$(command)

For i = LBound(validCommands) To UBound(validCommands)
If UCase$(validCommands(i)) = cmdUpper Then
IsValidCommand = True
Exit Function
End If
Next i

IsValidCommand = False
End Function

Public Function GetCommandHelp(command As String) As String
Select Case UCase$(Trim$(command))
Case "HELP"
GetCommandHelp = "Displays help information"
Case "SAVE"
GetCommandHelp = "Saves the current document"
Case "LOAD"
GetCommandHelp = "Loads a document"
Case "EXIT", "QUIT"
GetCommandHelp = "Exits the application"
Case Else
GetCommandHelp = "Unknown command"
End Select
End Function

Error Handling

The UCase function can raise the following errors:

Note: UCase (without $) returns Null if passed Null, while UCase$ raises an error.

Performance Notes

Best Practices

  1. Use UCase$ when possible for better performance and type safety
  2. Cache conversions when comparing the same string multiple times
  3. Combine with Trim$ when normalizing user input
  4. Handle Null explicitly when using UCase (not UCase$)
  5. Use StrComp for locale-aware comparison instead of manual UCase conversion
  6. Consider Option Compare Text for case-insensitive operations in entire module
  7. Document case-sensitivity in function comments
  8. Normalize early in data processing pipeline
  9. Use for display formatting when uppercase is needed for UI
  10. Avoid repeated conversion in tight loops

Comparison Table

Function Conversion Returns Null Handling
UCase To uppercase Variant (String) Returns Null
UCase$ To uppercase String Error on Null
LCase To lowercase Variant (String) Returns Null
LCase$ To lowercase String Error on Null
StrConv Various Variant Configurable

Platform Notes

Limitations

← Back to String | View all functions