Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

02.02.2011, 19:00

[C#] Strings Splitten

Hallo,
ich möchte eine CSV-Datei einlesen und die Blöcke in eine Struktur speichern. Ich habe momentan diesen Ansatz:

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
        IProdukt toIProduct(string text)
        {            
            string ID           = text = text.Substring(0, text.IndexOfAny(";".ToCharArray()));
 
            string Name         = text = text.Substring(0, text.IndexOfAny(";".ToCharArray()));
 
            string Beschreibung = text = text.Substring(0, text.IndexOfAny(";".ToCharArray()));
 
            string Preis        = text = text.Substring(0, text.IndexOfAny(";".ToCharArray()));
            
            return new SProdukt(Name, Beschreibung, Convert.ToInt32(ID), Convert.ToDouble(Preis));
        }


Ich finde diese Angehensweise jedoch etwas ineffizient, und wollte nach einer eleganteren Lösung fragen.

Grüße,
GrennPepper

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

02.02.2011, 19:14

Wie wärs damit? ;)

3

02.02.2011, 19:20

:) Hab ich ganz übersehen... danke. Interessensfrage: Funktioniert die Split-Funktion so wie ich es gemacht habe?

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

4

02.02.2011, 19:22

Nein...

Angenommen du hast den String "123;Name;Beschreibung;123"

Dann weißt du ID den Wert 123 zu.
text hat jetzt auch diesen Wert und bei der Zuweisung von Name müsste es schon knallen, weil du einen Substring mit der Länge -1 haben willst ;)

5

02.02.2011, 19:31

nö müsste es nicht:
string ID = text = text.Substring(0, text.IndexOfAny(";".ToCharArray()));
Denn Text weist sich selber den SubString zu...;)

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

6

02.02.2011, 19:59

Denn Text weist sich selber den SubString zu...;)


Ja eben...
Du weist Text einen Substring vom Anfang bis zum ersten vorkommen von ";" zu. Nach dem ersten Aufruf gibt es somit in text keine ; mehr...

7

02.02.2011, 20:06

Ja muss ich dir recht geben -.-
ich müsste zwei SubStrings mit einbauen...

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

02.02.2011, 20:23

Nimm einfach .Split(';') und fertig. Ich würde übrigens gerade bei solchen Daten-Lade-Routinen dann doch noch ein paar Prüfungen durchführen, statt da einfach nichtssagende Exceptions fliegen zu lassen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige