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!
-
IndexOf(..) würde z.B. gehen:
http://msdn.microsoft.com/en-us/library/system.string_members.aspx
-
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: 55Anfang:
1 xx.xx xy.zy x x
2 xx.xx xy.zy x x
3 xx.xx xy.zy x xEnde
//List EndeNun 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