Zeichen filtern

  • Access

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Markus2006.

    Zeichen filtern

    Guten Tag zusammen,
    kann mir vielleicht einer mal en Lösungsvorschlag geben. Folgendes Problem: Man hat eine Kette von Zeichen (String) z.B. abbcglllmopp usw. jetzt will ich aus dieser Kette nur die Zeichen haben die öfters als einmal vorkommen. Das Ergebnis sollte dann so aussehen: blp
    Wäre supi wenn mir da jemand weiterhelfen könnte.
    Vielen Dank schon mal im vorraus.

    Gruß Richard
    Hallo Richard08,

    was hälst Du davon:

    Visual Basic-Quellcode

    1. Private Sub CommandButton1_Click()
    2. Dim i, j As Integer
    3. Dim temp As String
    4. Dim aktuellerBuchstabe As String
    5. Dim letzterBuchstabe As String
    6. Dim letzterDoppelterBuchstabe As String
    7. Dim doppelteBuchstaben As String
    8. temp = "abbdefggikklll"
    9. letzterBuchstabe = ""
    10. For j = 1 To Len(temp)
    11. aktuellerBuchstabe = Mid(temp, j, 1)
    12. If aktuellerBuchstabe = letzterBuchstabe Then
    13. If Not letzterDoppelterBuchstabe = aktuellerBuchstabe Then
    14. doppelteBuchstaben = doppelteBuchstaben & aktuellerBuchstabe
    15. letzterDoppelterBuchstabe = aktuellerBuchstabe
    16. End If
    17. End If
    18. letzterBuchstabe = aktuellerBuchstabe
    19. Next
    20. End Sub


    Variablenerklärung:
    - aktuellerBuchstabe = erklärt sich von selber
    - letzterBuchstabe = der Buchstabe der zuvor ausgewertet wurde. Beim ersten mal ist diese Variable leer.
    - letzterDoppelterBuchstabe = hier wird der letzte doppelte Buchstabe gespeichert, somit wird z.b. "l" nicht mehr mals gelistet
    - doppelteBuchstaben = hier werden alle Buchstaben gesammelt

    Gruß Markus
    Super vielen Dank funktioniert auch so ist das viel Aufwand wenn man z.B. jetzt noch maximal 30 Zeichen eingeben darf und auch in der Zeichenkette die so lautet "abdadadb" das dann auch nur "abd" bei rauskommt also die ganze Kette auf doppelte untersuchen.

    MfG
    Richard
    ___________________________________________________________________________________________
    Option Compare Database

    Private Sub Btn_filtern_Click()
    Dim i, j As Integer
    Dim temp As String
    Dim aktuellerBuchstabe As String
    Dim letzterBuchstabe As String
    Dim letzterDoppelterBuchstabe As String
    Dim doppelteBuchstaben As String

    temp = Txt_Eingabe
    letzterBuchstabe = ""
    For j = 1 To Len(temp)
    aktuellerBuchstabe = Mid(temp, j, 1)
    If aktuellerBuchstabe = letzterBuchstabe Then
    If Not letzterDoppelterBuchstabe = aktuellerBuchstabe Then
    doppelteBuchstaben = doppelteBuchstaben & aktuellerBuchstabe
    letzterDoppelterBuchstabe = aktuellerBuchstabe
    End If
    End If
    letzterBuchstabe = aktuellerBuchstabe
    Txt_Ausgabe = doppelteBuchstaben
    Next
    End Sub

    _____________________________________________________________________________________
    so habe ich es jetzt was und wo muss ich denn jetzt was ändern???
    Servus Richard,
    wir machen das ganz anderst. Die neue Version kann auch Deine Vorgaben und ist auch noch viel schneller und weniger Code:

    Visual Basic-Quellcode

    1. Private Sub Btn_filtern_Click()
    2. Dim i, j As Integer
    3. Dim temp As String
    4. Dim doppelteBuchstaben As String
    5. Dim BuchstabenZähler As Integer
    6. 'temp = Txt_Eingabe
    7. temp = LCase(Txt_Eingabe)
    8. doppelteBuchstaben = ""
    9. For i = 97 To 122
    10. BuchstabenZähler = 0
    11. For j = 1 To Len(temp)
    12. If Asc(Mid(temp, j, 1)) = i Then
    13. BuchstabenZähler = BuchstabenZähler + 1
    14. End If
    15. Next
    16. If BuchstabenZähler > 1 Then
    17. doppelteBuchstaben = doppelteBuchstaben & Chr(i)
    18. End If
    19. Next
    20. End Sub


    Funktion: In der ersten Schleife werden alle ASCII-Codes aller kleinen Buchstaben durchlaufen und im inneren Teil geschaut, ob dieser in dem Eingabestring vorhanden ist. Wenn ja, wird der "BuchstabenZähler" inkrementiert. Sollte der BuchstabenZähler > 1 sein, so ist dieser Buchstabe mehr als einmal vorhanden und wird als "doppelterBuchstabe" gespeichert.

    Wichtig: Bei Deiner Eingabe "Txt_Eingabe" müssen alle Zeichen als Kleinbuchstabe vorhanden sein. Aus diesem Grund benütze ich den Befehl "LCase".

    Gruß Markus