[C#] txt-Dateien auslesen: Zahlen parsen & reguläre Ausdrücke

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Lucky009, 12. August 2009 .

  1. 12. August 2009
    txt-Dateien auslesen: Zahlen parsen & reguläre Ausdrücke

    Grüße an die Gemeinde,

    ich probiere mich gerade ein wenig mit C# aus und stehe gerade vor einem Problem. Ich möchte mit txt-Dateien arbeiten, diese einlesen und editieren. Diese Datei hat folgendes Layout:
    Code:
    #Kommentar
    #Kommentar
    #Kommentar
    #Zahl1 <tab> Zahl2 <tab> Zahl3 <tab> Zahl4 ...
    Zahl1 <tab> Zahl2 <tab> Zahl3 ...
    #Zum Beispiel:
    0001 <tab> 0.25 <tab> -1,75 <tab> +2,25 <tab> 5 ... 
    Mir ist es schon gelungen, die Kommentarzeilen mithilfe von regulären Ausdrücken zu erkennen:
    Code:
    Regex regex = new Regex(@"^\s*#");
    Diese Notation erlaubt auch Kommentarzeilen, wo vor dem Rautezeichen eine oder mehrere Leerzeichen stehen.
    Auf ähnliche Art und Weise möchte ich die in der Textdatei stehenden Zahlen parsen und intern an Variablen vergeben. Wie ihr seht sind die Zahlen tabstopp-getrennt. Das sollte in dem gesuchten regulären Ausdruck mit vermerkt sein. Eine weitere Schwierigkeit ist das Format der Zahlen. Die erste, vierte, sechste, neunte und elfte Zahl ist eine natürliche Zahl. Die restlichen sind Kommazahlen, wobei bei positiven Zahlen wahlweise das Voreichen davorsteht oder nicht. Es gibt eine Vorkommazahl und zwei Nachkommazahlen...

    So, hoffe ihr könnt mir helfen und sagen, welcher regulärer Ausdruck von nöten ist und mit welchen Methodenaufrufen ich dem internen int-array die Zahlen aus der Textdatei zuweise.


    Mfg Lucky
     
  2. 12. August 2009
    AW: txt-Dateien auslesen: Zahlen parsen & reguläre Ausdrücke

    Um die Zahlen zu prüfen würde ich die Zeile in ein Array splitten und dann von dort aus prüfen ob sie gültig sind.

    Die Zeile bekommst du in ein Array mit der Split Methode, dort kanst du auch das Delimiterzeichen mitgeben, in deinem Fall Tab.

    gruß
    meckes
     
  3. 12. August 2009
    AW: txt-Dateien auslesen: Zahlen parsen & reguläre Ausdrücke

    Dafür brauchst du aber keinen regulären Ausdruck. Lad dir die Zeile in einen String und nutze die String Funktion
    Code:
    if (tmpString.StartsWith('#'))
    {
     (...)
    }
    Ich würde auch meckes Rat beachten und nicht unbedingt mit Regex arbeiten. Die sind zwar super praktisch, aber auch leicht fehleranfällig. C# bietet einige String Operationen, die deinen Ansprüchen mehr als genügen

    Am besten lädst du dir alle Werte mit Split in ein Array und dann:
    Code:
    for (int i = 0; i < splitArray.Length; i++)
    {
     if (splitArray[i] != "\t")
     numberarray[i] =Convert.ToInt32(splitArray[i]);
    }
    
    Da du aber nicht weißt, wie viele Zahlen in dem Array sind und somit auch nicht weißt, wie groß das Array für die Zahlen sein soll, würde ich dir raten die Sachen in eine Funktion auszulagern mit einer ArrayList oder List und die am Ende einfach wieder in ein Array zu konvertieren.

    Code:
    int[] filteredNumbers (string[] pRawArray)
    {
     List<int> tmpList = new List<int>();
     for (int i = 0; i < pRawArray.Length; i++)
     {
     if (pRawArray[i] != "\t")
     tmpList.Add(Convert.ToInt32(pRawArray[i]));
     }
     return tmpList.ToArray();
    }
    
    greez
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.