CleanString




Public Function CleanString(InputString As String, _
Optional ScanDirection As Variant) As String
Dim k As Integer
Dim DecimalFound As Boolean
Dim MinusFound As Boolean
Dim LeftToRight As Boolean
Dim FromValue As Integer
Dim ToValue As Integer
Dim StepIncrements As Integer
Dim OutputString As String
Const MinusSign As String = "-"
'

' Protect against a zero length input string

'

OutputString = ""
If Len(InputString) <= 0 Then
GoTo FunctionExit
End If
'

' Check if the first character is a minus sign

'

If Left(InputString, 1) = MinusSign Then
MinusFound = True
Else
MinusFound = False
End If
'

' Determine the scan direction

'

If IsMissing(ScanDirection) Then
GoSub SetLeftToRight
Else
If ScanDirection = 0 Then
GoSub SetLeftToRight
Else
'** Right to left

FromValue = Len(InputString)
ToValue = 1
StepIncrements = -1
LeftToRight = False
End If
End If
'

' Examine the passed string character by character ignoring any

' which are not 0 thru 9 or the first decimal point encountered

'

DecimalFound = False
For k = FromValue To ToValue Step StepIncrements
Select Case Mid(InputString, k, 1)
Case "0" To "9"
GoSub KeepCharacter
Case "."
If Not DecimalFound Then
GoSub KeepCharacter
DecimalFound = True
End If
End Select
Next k
'

' If needed, put the minus sign back

'

If MinusFound Then
OutputString = MinusSign & OutputString
End If
'

' Return the cleaned up string

'

FunctionExit:
CleanString = OutputString
Exit Function
'********************************************************************

' Subroutines

'********************************************************************

SetLeftToRight:
FromValue = 1
ToValue = Len(InputString)
StepIncrements = 1
LeftToRight = True
Return
KeepCharacter:
If LeftToRight Then
OutputString = OutputString & Mid(InputString, k, 1)
Else
OutputString = Mid(InputString, k, 1) & OutputString
End If
Return
End Function











( cleanstring.html )- by Paolo Puglisi - Modifica del 17/12/2023