List nach bestimmten Zeichfolgen durch suchen



  • Hallo

    ich habe eine String List die wie folgt aussieht:

    Baum: 5
    Eiche: 256
    Haus: 55
    ...

    Ich möchte nun in jedem einzelnen Eintrag nach dem String vor dem ":" vergleichen und den Wert hinter dem ":" in eine Textbox ausgeben.

    ....
    List<String^>^ CKlasse::Daten_auswerten(List<String^>^ ls_Daten)
    	{
    		ls_Daten2 = gcnew List<String^>;
    		String^ s_puffer = nullptr;
                    String^ s_zwischenpuffer = nullptr;
    
    		for each (s_zwischenpuffer in ls_Daten)
    		{
    
    		if((String::Compare(s_zwischenpuffer, "Baum:")== 0))
    		{
    		   s_puffer = s_zwischenpuffer;
    		   array<String^>^ s_TeilString = s_puffer->Split(L':');
    		   ls_Daten2->Add(s_TeilString[1]);			
    		}
    		....
    
    		}
    
    		return ls_Daten2;
    	}
    

    Mein Problem ist, dass die Compare-Funktion nur funktioniert, wenn ich den ganzen String ("Baum: 5") eingebe. Gibt es keine Funktion die nur einen Teilstring in einem String sucht und wenn Gleichheit herrscht irgendetwas macht?
    Frage 2 ist: Warum kann ich bei s_zwischenpuffer nicht die Split-Funktion anwenden?

    Vielen Dank für Eure Hilfe!





  • Moin,

    da wäre wohl ein eigenes Objekt günstiger

    public ref class Weltobjekt
    {
        public:
            String ^bezeichnung;   // Q&D
            int zahl;              // Q&D
    
            virtual overrides String ^ToString()
            {
                return String::Concat(bezeichnung, ":", zahl.ToString());
            }
    }
    
    List<Weltobjekt^>^ CKlasse::Daten_auswerten(List<Weltobjekt^>^ ls_Daten)
    {
        // ...
    }
    

    dann ersparst Du Dir das Splitten

    hand, mogel



  • Also mit IndexOf funktioniert es super.
    Nun habe ich ein weiteres Problem, wo ich überhaupt keine Lösung finde.

    Ich habe wie oben beschrieben meine List, die wie folgt erweitert ist:

    //List Anfang
    Baum: 5
    Eiche: 256
    Haus: 55

    Anfang:

    1 xx.xx xy.zy x x
    2 xx.xx xy.zy x x
    3 xx.xx xy.zy x x

    Ende
    //List Ende

    Nun möchte ich gerne in der foreach Schleife die Daten in dem String einzeln auslesen. Das später meine neue List so aussieht:

    5
    256
    55
    1
    xx.xx
    xy.zy
    x
    x
    2
    .......

    Vielleicht hat ja jemand einen Tipp für mich.
    MfG
    MisterX


Log in to reply