CString mit Platzhalter durchsuchen



  • Hallo Zusammen,

    ich würde gerne einen CString nach einem Substring durchsuchen. Dieser Substring besteht aus 14 Zeichen, wobei die ersten 5 Zeichen sowie das letzte Zeichen konstant sind. Bei dem Mittelteil handelt es sich um eine Artikelnummer, die ich aus dem String auslesen will. Ist es möglich den gesamten CString mithilfe eines Platzhalters zu durchsuchen, also .find(L"12345********6")? Vielen Dank schonmal!



  • Suche jeweils nach dem Prä- und Suffix und lese dann den Mittelteil anhand der Indizes aus.

    PS: Dieses Thema sollte, wegen CString, eher in das MFC-Subforum.



  • Hallo Th69,

    vielen Dank für deine schnelle Antwort. Leider sind die Prä- und Suffixe nicht sehr einwandfrei zu identifizieren, so bestehen manche Präfixe des Strings (bei einem anderen Beispiel) teilweise aus der Zahl "10", was bei einem String der aus ca. 40 Zahlen besteht durchaus öfter vorhanden.



  • Du hast doch geschrieben, dass Dein Präfix aus 5 konstanten (bekannten?) Zeichen besteht?



  • @Belli

    Ja, das war allerdings nur ein (einfaches) Beispiel der verschiedenen Daten, die ich aus dem gesamten String extrahieren will, wie gesagt, die Präfixe von anderen Merkmalen sind evtl. auch mehrmals vorhanden. Bei Beispiel:

    Der gesamte String lautet:

    010415009339125021704167954634091725021810LK6671

    Das Präfix lautet 21 und das Sufix 17. Wenn ich nur nach 21 oder 10 Suche, bekomme ich mehrere Stellen 21 oder 10.



  • Wenn du es noch nicht einmal eindeutig auflösen kannst, wie soll es dann ein Algorithmus können?
    Oder gibt es noch andere Merkmale (z.B. Differenz zwischen Prä- und Suffix ist konstant)?

    Edit: Du solltest das Suffix natürlich ausgehend (rechts) vom Präfix suchen (nicht vom Stringanfang)!



  • @medic89 sagte in CString mit Platzhalter durchsuchen:

    Der gesamte String lautet:

    010415009339125021704167954634091725021810LK6671

    Das Präfix lautet 21 und das Sufix 17. Wenn ich nur nach 21 oder 10 Suche, bekomme ich mehrere Stellen 21 oder 10.

    Du suchst also nach 21, findest die Position, addierst 2 auf die Position (weil 21 zwei Stellen hat) und suchst von da an nach 17 ... oder wie?


Log in to reply