string



  • hi,

    habe einen ewig langen string. wie kann ich alles was innerhalb
    dieses strings zwischen /** und */ (kann öfter vorkommen) steht in einen anderen string schreiben???



  • schau mal in die fag...
    dort gibt es was von mir (multible stringsuche oder so) das könnte dir helfen...



  • das hab ich mir schon angekuckt. hilft mir nicht wirklich weiter!!!



  • mhhh dann weiss ich es jetzt auf die schnelle auch nicht



  • Ich weiß nicht ob du so etwas suchst. Kannst es ja mal probieren.
    CString object;
    int t = 0;
    while(pathname.Find("/",t) == -1)
    {
    Stringliste = object.Mid( object.Find("/
    ",t) ,
    object.Find("/",t))
    t = object.Find("
    /",t) + 1;
    }



  • Da du bei den MFC bist, geh ich mal davon aus, dass du CString meinst:

    CString strSource = ....;
        CString strDest;
        int iStart = strSource.Find("/*");
        int iEnde  = strSource.Find("*/");
    
        if (iStart != -1 && iStop != -1){
            strDest = strSource.Mid(iStart+2,(iEnde - iStart -2));
        }
    

    Alle Angaben sind wie immer ohne Gewähr
    [edit] und hier nur eine Teillösung. Bei mehreren Vorkommen würd ich immer wieder den bereits verarbeiteten Teil am Anfang abschneiden und mit dem Rest weitermachen.
    Den zweiten * bei /** hab ich übersehen. Aber es dürfte kein Problem sein das Programmstück entsprechend zu ändern. [/edit]

    [ Dieser Beitrag wurde am 07.08.2002 um 12:03 Uhr von Kauz01 editiert. ]



  • wenn ichs richtig verstanden hab sollten dir diese zeilen helfen (sofern es sich um ein CString handelt):

    CString str = "....../**.....*/...";
    
    int pos1 = str.Find("/**");
    int pos2 = str.Find("*/",pos1);
    CString neustr = str.Mid(pos1,pos2-pos1);
    

    habs allerdings nicht probiert, abprüfungen sind also diesbezüglich auch nicht drinnen

    [ Dieser Beitrag wurde am 07.08.2002 um 12:01 Uhr von Reiti editiert. ]



  • Original erstellt von Reiti:
    **wenn ichs richtig verstanden hab sollten dir diese zeilen helfen (sofern es sich um ein CString handelt):

    CString str = "....../**.....*/...";
    
    int pos1 = str.Find("/**");
    int pos2 = str.Find("*/",pos1);
    CString neustr = str.Mid(pos1,pos2-pos1);
    

    habs allerdings nicht probiert, abprüfungen sind also diesbezüglich auch nicht drinnen

    [ Dieser Beitrag wurde am 07.08.2002 um 12:01 Uhr von [qb]Reiti** editiert. ][/QB]

    Schaut schon ganz gut aus so!
    wie kann ich es hinkriegen dass er alle kommentare rausbekommt!
    der string sieht also ungefähr so aus: ..../...*/..../..../..../**..../.....
    mit deinem codeschnipsel bekomme ich ja nur einmal den teilstring raus, oder???



  • CString strSource = ....;
        CString strWork = strSource;
        CStringArray arrayStrings;
        int iStart = strWork.Find("/**");
        int iEnde  = strWork.Find("*/");
    
        while (iStart != -1 && iEnde != -1){
              arrayStrings.Add(strSource.Mid(iStart+3,(iEnde - iStart -3)));
              strWork = strWork.Mid(iStop + 2);
              iStart = strWork.Find("/**");
              iEnde  = strWork.Find("*/");
    
        }
    

    Wieder mal ohne Gewähr

    [ Dieser Beitrag wurde am 07.08.2002 um 12:33 Uhr von Kauz01 editiert. ]



  • falls es außer mir noch jemanden interessiert, hier die getestete
    Lösung:

    CString strSource = ".../*1*/..../*2*/.../*3*/...";
        CString strWork = strSource;
        CString strTemp;
    
        string strT = strWork;
    
        int iL = strT.length();
        int iStart = strWork.Find( "/*" );
        int iEnde = strWork.Find( "*/" );
    
        while( iStart != -1 && iEnde != -1 )
        {
            strTemp = strWork.Mid( iStart, iEnde-iStart );
            AfxMessageBox( strTemp );
    
            strWork = strWork.Right( iL - (iEnde+2) );
    
            strT = strWork;
            iL = strT.length();
            iStart = strWork.Find( "/*" );
            iEnde = strWork.Find( "*/" );
        }
    

    hier werden die teilstring natürlich nur temporär in strTemp gespeichert.
    wenn man sich alles rausholen will, so kann man diese an
    einen string anhängen und später die kommentarzeichen noch ersetzen bzw. entfernen.


Anmelden zum Antworten