Rob
Rob

Reputation: 1255

Remove chars from a string

I have the following function but I want it to do the opposite eg return the bad chars not the ones I specify

This function lets you specify a two strings. The string you want to parse and a string of chars that you would like to keep from the first string specified - The edited string is returned

Function GETALPHANUMERIC(text, str_all)

 For lenstr = 1 To Len(text)
     If InStr(str_all, LCase(Mid(text, lenstr, 1))) Then
         GETALPHANUMERIC = GETALPHANUMERIC & Mid(text, lenstr, 1)
     End If
 Next

 End Function

Thanks Rob

Upvotes: 1

Views: 433

Answers (4)

minnow
minnow

Reputation: 1101

In other words, you want to strip out (remove) characters from the source string? If so, here's an answer for that:

Function StripChars(source As String, chars As String)
    Dim pos As Long
    For i = 1 To Len(chars)
        Do
            pos = InStr(1, source, Mid(chars, i, 1), VbCompareMethod.vbTextCompare)
            If pos > 0 Then
                source = Mid(source, 1, pos - 1) & Mid(source, pos + 1)
            Else
                Exit Do
            End If
        Loop
    Next i
    StripChars = source
End Function

Upvotes: 0

Rob
Rob

Reputation: 1255

Also just wrote this too - thought I would share just incase

Function BadChar(text, str_all)

     For lenstr = 1 To Len(text)
     If InStr(str_all, LCase(Mid(text, lenstr, 1))) = 0 Then
         BadChar = BadChar & Mid(text, lenstr, 1)
     End If
Next

End Function

Upvotes: 0

Just add = 0 :

If InStr(str_all, LCase(Mid(text, lenstr, 1))) = 0 Then

The InStr function returns 0 when no match is found.

Upvotes: 2

assylias
assylias

Reputation: 328568

You could use the split function like in the example below.

Sub test()

  Dim s As String
  Dim result As String

  s = "abcXdefXghiX"
  result = excludeCharacter(s, "X")

  MsgBox s & " excluding X is " & result

End Sub

Function excludeCharacter(originalString As String, exclude As String) As String

  Dim sArray() As String
  Dim result As String
  Dim i As Long

  sArray = Split(originalString, exclude)

  For i = 0 To UBound(sArray, 1)
    result = result & sArray(i)
  Next i

  excludeCharacter = result

End Function

Upvotes: 1

Related Questions