Text auslesen (Wortweis aus Richedit)



  • Hallo, ich hoffe ihr könnt mir hier im Forum weiterhelfen. Bisher hab ich es immer versucht ohne Hilfe zu schaffen aber jetzt muß ich euch mal belasten.

    Und zwar möchte ich einen Text der jetzt zum Bsp. mal im Richedit steht auslesen. Und zwar soll der mit zum Beispiel das Wort was auf das gesucht Wort ausgeben. Bsp.:

    Das Wetter ist heute sehr schön.

    Gesucht ist das Wort nach "heute". Der Rechner soll mir jetzt also zum testen erstmal eine ShowMessage("sehr") ausgeben.

    Ich hoffe ihr habt verstanden wie. Probiere jetzt schon seit über 3 Tagen udn komm nicht weiter.

    Meine größte Idee war bis jetzt so:

    int Pos=RichEdit1->Lines->Text.Pos("heute ");
    und dann mit dem darauf folgenden das nächste wort aber ich weiß nicht wie man das nächste wort bzw. die trennung durch leerzeichen etc. herausfindet.

    bin für jeden hinweiß dankbar.

    P.s.: bin relativer anfänger. bitte recht einfach 🙂



  • Hallo

    AnsiString Text = "Das Wetter ist heute sehr schön."; // Ausgangstext
      AnsiString SearchWord = "heute"; // zu suchendes Wort
      AnsiString NextWord; // Wort nach dem zu suchenden Wort
      int Pos = Text.AnsiPos(SearchWord); // Wort in Text suchen
    
      // Wenn Wort in Text vorhanden, nächstes Wort suchen
      if (Pos > 0)
      {
        Pos += SearchWord.Length();// Position um Wort
        AnsiString Part = Text.SubString(Pos +1, Text.Length() - Pos +1); // Text nach dem Suchwort raustrennen
        Pos = Part.AnsiPos(" "); // im Text danach nach dem nächsten Leerzeichen suchen
        if (Pos > 0) NextWord = Part.SubString(1, Pos -1); // Text bis Leerzeichen ausschneiden
        }
    

    Das basiert alles auf den AnsiString-Methoden, die du u.a. hier nachlesen kannst.

    bis bald
    akari



  • Hallo,

    Hier mal eine andere Variante (mit Vergewaltigung von TStringlist)

    TStringList * list = new TStringList;
    AnsiString text = "Das Wetter ist heute sehr schön."; // Suchsatz
    AnsiString SearchWord = "heute"; // zu suchendes Wort
    AnsiString NextWord; // Wort nach dem zu suchenden Wort
    list->CommaText = text;  // StringList teilt so selbsttätig bei Kommas und Leerzeichen auf
    int index = list->IndexOf(SearchWord); // Suche nach dem Wort
    if( index != -1 && index < list->Count)  // ist das Wort enthalten und nicht das Letzte
        NextWord = list->Strings[index+1];
    delete list;
    


  • ok super habs grade mal kurz probiert das funkt. ich versuch mal am wochenende den ganzen text auszulesen und werde dann meine lösung online stellen.


Anmelden zum Antworten