Punkt mit Komma in einem String ersetzen?



  • Hallo,

    ich möchte einen String zeilenweise lesen und darin alle Punkte durch ein Komma ersetzen.

    In dieser Schleife wird der String eingelesen, manipuliert und dann ausgegeben.
    Kann mir jemand helfen? 🙂

    Zitat:
    tmplst->Delimiter='\t';
    double wert;
    for (int i =0;i<Liste1->Count ;i++ ) {
    tmplst->Clear();
    tmplst->DelimitedText= Liste1->Strings[i];
    wert = tmplst->Strings[1].ToDouble();
    Liste2->Add(AnsiString(wert)+"Datum:"+tmplst->Strings[0]);
    }

    Vielen Dank!!



  • Hallo

    Siehe die Funktion StringReplace

    bis bald
    akari





  • StringReplace verursacht bei sowas manchmal fehler und geht nicht richtig hatte ein ähnliches problem einmal konnte dann zum Glück das Projekt an einen Kollegen mit mehr erfahrung weitergeben 🙂

    Funktioniert es bei dir rena??

    wisst ihr noch andere methoden dafür fals ich das noch einmal brauchen könnte würde ich es gerne wissen danke euch lieben die mehr wissen als ich

    lg Vanni 🙂



  • Ich hatte noch nie Probleme mit StringReplace. Bist du sicher das deine Probleme nicht auf falscher Anwendung beruhen?
    Für alle die eine Alternative sehen wollen, hätte ich hier eine Funktionen basierend auf Standard-C++

    struct strtools
    {
       enum TStringReplace { None, All, First, Last };
    };
    
    std::string replaceString(const std::string& src, const std::string& oldPattern,
            const std::string& newPattern, strtools::TStringReplace flag)
    {
         if( oldPattern == newPattern ) return src;
         switch(flag)
         {
            case strtools::None: return src;
            case strtools::All:
            {
                std::string::size_type pos;
                std::string resstr(src);
                while((pos = resstr.find(oldPattern)) != std::string::npos )
                    resstr = resstr.replace(pos, oldPattern.size(), newPattern);
                return resstr;
            }
            case strtools::First:
            {
                std::string resstr(src);
                std::string::size_type pos(resstr.find(oldPattern));
                if( pos != std::string::npos )
                    resstr = resstr.replace(pos, oldPattern.size(), newPattern);
                return resstr;
            }
            case strtools::Last:
            {
                std::string::size_type pos, lpos(string::npos);
                std::string resstr(src);
                while((pos = resstr.find(oldPattern)) != std::string::npos )
                    if( pos != std::string::npos ) lpos = pos;
                if( lpos != std::string::npos )
                    resstr = resstr.replace(lpos, oldPattern.size(), newPattern);
                return resstr;
            }
            default: return src;
         }
    }
    //---------------------------------------------------------------------------
    


  • ja es wäre leicht möglich das ich es falsch angewendet habe.

    hab leider keine erfahrung im programmieren schon gar nicht C++ werde mir das hier mal speichern und wenn ich es wieder brauche werde ich es testen danke schon mal.

    und rena hilft es dir auch oder hat bei dir StringReplace funktioniert?

    aber das hier ist ein nettes forum ich werde wen ich hier nicht fündig werde auch mal meine probleme posten da es ja hier so nette leute gibt die gern helfen 🙂

    naja aber bevor das hier in spam ausartet

    Lg eure Vanni



  • Hier die obige Funktion nochmal vereinfacht, wenn nur Punkt durch Komma ersetzt werden soll.

    std::string replace_pk(const std::string& src)
    {
       std::string::size_type pos(0);
       std::string resstr(src);
       while((pos = resstr.find(".",pos)) != std::string::npos )
           resstr = resstr.replace(pos, 1, ",");
       return resstr;
    }
    


  • also ich benutze die Funktion StringReplace sehr oft und hatte noch nie Probleme. Wenn ich rfReplaceAll benutzen muß, verwende ich lieber AnsiReplaceStr bzw. AnsiReplaceText.



  • OldMan00 schrieb:

    Wenn ich rfReplaceAll benutzen muß, verwende ich lieber AnsiReplaceStr bzw. AnsiReplaceText.

    Gibts damit Probleme?



  • Nein, ist einfach kürzer oder vielleicht auch nur einfach übersichtlicher für mich ohne Flags.



  • gibt es aber nicht beim BCB5.



  • Doch, benutze StringReplace in der 5er Pro.



  • Braunstein bezog sich auf "AnsiReplaceStr bzw. AnsiReplaceText".


Anmelden zum Antworten