Ansistring kürzen



  • Moin,
    ich möchte einen AnsiString kürze.
    Der sieht so aus:
    blablabla [l]

    Die eckigen klammern samt Inhalt sollen gelöscht werden. Mein bisheriger Quellcode war für die Katz. Bitte helft mir.

    String split(const AnsiString& text)
    {
    
       	std::string lang = text.c_str();
        std::string sepa1 = "[";//separators1.c_str();
        std::string sepa2 = "]";//separators2.c_str();
    	int start, stop;
    
    	start =lang.find_last_not_of(sepa1)+1;
      	stop = lang.find_last_not_of(sepa2)+1;
    
        lang = lang.erase(start,stop);
    
        AnsiString returnValue = lang.c_str();
        return returnValue;
    }
    


  • Erstens hat Ansistring ganz sicher eigene Methoden für so etwas. Zweitens gibst du string::erase() die Startposition und Länge des zu löschenden Abschnittes mit. Und drittens löscht erase() direkt vor Ort (also brauchst du dort nicht noch extra zuweisen).



  • Die zugehörige AnsiString-Funktion heißt Delete

    AnsiString& __fastcall Delete(int index, int count);
    

    Mehr dazu findet sich in der BCB-Hilfe bei den Methoden von AnsiString. Außerdem hilfreich ist noch AnsiString::Pos.



  • Danke,
    hatte es dann auch schon gefunden. Trotzdem danke, für die Mühen.


Anmelden zum Antworten