String zerlegen



  • nicht hauen jansen. aber ich denke wenn ich es versuche und dann nicht weiter komme, darf ich einen thread öffen oder? ansonsten hauen 🕶 :p

    habs nun ohne hilfe versucht, da die logik eigentlich da ist, aber irgendwie klappt es doch noch nicht wie es soll. ich versuche einen string in der form:
    (inkl. anführungszeichen) zu zerlegen.

    "inhalt1","inhalt2"

    var1 soll inhalt1 bekommen, vat2 den inhalt2.

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        int s1count = 0;
        int s2count = 0;
        String Full = "\"http://www.c-plusplus.net/index.php\",\"Forum\"";
        if(Full.Pos("\""))
        {
            for(int x = 2; x < Full.Length(); x++)
            {
                if(Full.SubString(x,1) == "\"")
                {
                    s1count = x;
                    if(Full.SubString(x,1) == "\"")
                    {
                        s2count = x;
                    }
                }
            }
            Edit1->Text = Full.SubString(2,s1count);
            Edit2->Text = Full.SubString(s1count+3,s2count);
        }
    }
    

    wo liegt mein denkfehler? 😕



  • Hast die Aufgabe doch gelöst. 😉 Mußt halt auch so eintragen, wie du es zählen willst. Kannst mit den Werten spielen. Geht nach Belieben mit oder ohne die Anführungszeichen.:

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        int s1count = 0;
        int s2count = 0;
        String Full = "\"http://www.c-plusplus.net/index.php\",\"Forum\"";
        if(Full.Pos("\""))
        {
            for(int x = 2; x < Full.Length(); x++)
            {
                if(Full.SubString(x,1) == "\"")
                {
                    s1count = x;
                    if(Full.SubString(x,1) == "\"")
                    {
                        s2count = x;
                    }
                }
            }
            Edit1->Text = Full.SubString(1,s1count-2);
            Edit2->Text = Full.SubString(s1count,s2count+1);
        }
    }
    


  • hmm, irgendwie krieg ich das letzte " zeichen nicht weg. komisch

    Edit1->Text = Full.SubString(2,s1count-4);
    Edit2->Text = Full.SubString(s1count+1,s2count);
    

    zerlegt sieht das jetzt so aus:
    http://www.c-plusplus.net/index.php
    Forum"



  • Zum Entfernen/Änderen mehrerer identischer Zeichen(ketten) bietet sich StringReplace (Suchfunktion benutzen! ;)) an. Damit kannst du zB. alle Anführungszeichen auf einmal entfernen.



  • Hi <Fuck>,
    ähm noch kompizierter geht es nicht, oder?

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
     String Full = "\"http://www.c-plusplus.net/index.php\",\"Forum\"";
     Label1->Caption = Full;
     if(Full.Pos(","))
     {
      Edit1->Text = Full.SubString(2,Full.Pos(",") - 3);
      Edit2->Text = Full.SubString(Full.Pos(",") + 2, Full.Length() - Full.Pos(",") - 2);
     }
    }
    

    So!

    MFG

    Alexander Sulfrian

    Edit:
    Zitate bitte auf das Notwendigste beschränken. Danke!

    [ Dieser Beitrag wurde am 01.06.2003 um 00:10 Uhr von Jansen editiert. ]



  • Viermal Full.Pos(",") ist deine Vorstellung von Eleganz? 😉



  • Noch der Vollständigkeit halber, damit der 2. Teilstring stimmt:
    // Wie befohlen :p ohne letztes Anführungszeichen
    Edit2->Text = Full.SubString(s1count+1,Full.Length()-s2count-1);



  • Original erstellt von Jansen:
    Viermal Full.Pos(",") ist deine Vorstellung von Eleganz? 😉

    Hi,
    nagut:

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
     String Full = "\"http://www.c-plusplus.net/index.php\",\"Forum\"";
     Label1->Caption = Full;
     if(int pos = Full.Pos(","))
     {
      Edit1->Text = Full.SubString(2,pos - 3);
      Edit2->Text = Full.SubString(pos + 2, Full.Length() - pos - 2);
     }
    }
    

    Besser?

    MFG

    Alexander Sulfrian


Anmelden zum Antworten