Überprüfen, ob Item mehrfache Fragezeichen aufweist

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Patrick<br>.

    Überprüfen, ob Item mehrfache Fragezeichen aufweist

    Hallo Community,

    ich hätte eine Frage. Und zwar:
    Besitze ich eine ListBox mit Items, in denen sich Fragen und Antworten befinden. (z.B. Mehrzahl von Apfel?=Äpfel) - Jedoch wurden durch Fehler von Datenbanken die Umlaute geändert und zwar durch Fragezeichen. Der genannte Satz wird in der ListBox wie folgt gezeigt: Mehrzahl von Apfel?=?pfel

    Da es leider mehr als 20.000 Einträge sind, würde ich gerne ein jedes Item überprüfen, ob sich in dem Item mehr als 2 Fragezeichen befinden. (Könnten sich auch manchmal 3-6 Fragezeichen sein, je mehr Worte mit Umlauten umso mehr Fragezeichen)

    Wie kann ich dies Überprüfen mit Contains, dass mir nur die Items angezeigt werden, die 2+ Fragezeichen enthalten in VB.Net?


    Mit freundlichen Grüßen, Patrick.
    Programmieren heisst Formulieren.
    Wir formulieren einem Programm, was es zu tun hat.
    Je exakter wir das tun, umso besser arbeitet das Programm.

    Nun, da beginnt das Problem (und das ist als positive Kritik gemeint).
    Ich verstehe nicht einmal, was genau deine Frage ist.
    Daher ist mein persönlicher Tipp; Übe dich in der Formulierung.

    Aber dein Problem klingt für mich, als wären die Daten irgendwie in UNICODE geschrieben
    und Du versuchst sie als ASCII wieder einzulesen.
    Daher werden Sonderzeichen wie zB. lateinische Zeichen mit einem Fragezeichen ersetzt.
    Bei <Press Space> in den Sternenhimmel drückend...

    Eddy Dreizehn schrieb:

    Aber dein Problem klingt für mich, als wären die Daten irgendwie in UNICODE geschrieben
    und Du versuchst sie als ASCII wieder einzulesen.

    Ich habe eher die Vermutung, dass Unicode-Daten in die DB eingelesen wurden, die Tabellen aber dafür nicht ausgelegt waren.
    Damit wurden sie beim Schreiben schon nichtwiederbringbar verhunzt.
    Jetzt soll versucht werden, diese zerstörten Felder rauszusuchen und manuell zu reparieren.

    Sicherheitshalber sollte man die Daten direkt in der DB mal überprüfen.

    Falls die Originaldaten noch verfügbar sind, würde ich die DB korrekt einstellen und neu laden.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    @Eddy Dreizehn

    Ich will die Texte nicht in ASCII oder in UNICODE einlesen, sondern in der ListBox jedes Item überprüfen ob sich in diesem mehr als zwei Fragezeichen befinden!

    VB.NET-Quellcode

    1. For Each item In lines
    2. If item.ToLower.Contains("?") Then
    3. MsgBox(item)
    4. End If
    5. Next


    Bei diesem Beispiel wird mir jedes Item angezeigt, da sich in jedem Item eine Frage befindet, wo der Satz mit einem Fragezeichen abgeschlossen wird. Ich will nur Prüfen, ob sich in dem Item mehr als zwei Fragezeichen befinden.
    Ich glaube, eine solche universale Funktion ist leider nicht im Framework vorhanden.
    Mindestens ich würde das ungefähr wie folgt machen.
    In Pseudo-Code ungefähr so ausgedrückt:

    VB.NET-Quellcode

    1. Dim Fragezeichen as Integer = 0
    2. Für Index as Integer = 0 to Text.Länge - 1
    3. Dim Zeichen as Char = Text.Char(Index)
    4. If Zeichen = "?" Then
    5. Fragezeichen += 1
    6. End If
    7. Next Index


    Das heisst, wir wollen Buchstaben für Buchstaben deines Items durchgehen.
    Wir prüfen dabei, ob es sich um ein Fragezeichen handelt.
    Wenn ja, zählen wir dies.
    Am Ende weisst Du die Anzahl der Fragezeichen.
    Bei <Press Space> in den Sternenhimmel drückend...

    Eddy Dreizehn schrieb:

    Ich glaube, eine solche universale Funktion ist leider nicht im Framework vorhanden.

    Stimmt nicht ganz. RegEx wäre eine Möglichkeit.

    Aber im Sprachumfang von Visual Basic gibt es den Like-Operator, der das eleganter kann.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    petaod schrieb:

    Sicherheitshalber sollte man die Daten direkt in der DB mal überprüfen.
    Ist das mal gemacht worden?
    Weil möglicherweise sind die Daten ja völlig in Ordnung, nur beim Auslesen wird das falsche Encoding angewendet.
    Wenn man da nun anfängt, was zu reparieren, was garnet kaputt ist, dann isses hinterher wirklich kaputt.