C# *.csv beolvasás int[]-be

C# *.csv beolvasás int[]-be
2019-03-02T20:48:03+01:00
2019-03-02T21:34:58+01:00
2022-08-11T10:40:32+02:00
JohnnyNoble
Egy csv állományból szeretnék beolvasni kétjegyű számokat. Mindegy, hogy "StreamReader", vagy "File" osztály lesz a jó, csak az a lányeg, hogy mivel matematikai műveleteket akarok végezni, int[]-t szeretnék.
A csv fájl 5 oszlopot és x sort tartalmaz, de nekem jó, ha egy sort alkot az egész, tehát nem mátrixba akarom betölteni, hanem egy dimenziós tömbbe.
sikerül betölteni string[]-be az adatokat, de konvertálásnál a sor utolsó számára "System.FormatException: 'Nem megfelelő a bemeneti karakterlánc formátuma.'"
hibaüzenetet kapok. Rájöttem, hogy ha a sor végére teszek ";" szeparátort, akkor lefut  konverzió, de ha nincs (ahogy a csv sorok végén nem is szokott lenni), akkor nem sikerül.

Ahelyett, hogy végig pontosvesszőzöm az összes sor végét feldolgozás előtt, mi más megoldás van a problémámra?

Igen, mocskosul kezdő vagyok. :D

Köszönöm!

static void Main(string[] args) { string[] stringTomb = File.ReadAllText("a.txt").Split(';'); int[] intTomb = new int[stringTomb.Length]; for (int i = 0; i < stringTomb.Length; i++) { intTomb[i] = Convert.ToInt32(stringTomb[i]); } }
Mutasd a teljes hozzászólást!
A probléma az, hogy az entereket is beolvassa, és azok mentén is splitelni kell a stringet, amit így tudsz megtenni:

string[] stringTomb = File.ReadAllText(@"C:\Users\Peti\Desktop\asd.csv").Split(new char[] { ';', '\n' });
Mutasd a teljes hozzászólást!

  • nem értek a C#-hoz, de nem lehet, hogy az a hiba forrása, miszerint a Environment.NewLine is beolvasódik a File.ReadAllText() metódusnál, és miután szétdarabolod a ; mentén, egy sor utolsó eleme, és a következő sor első eleme között ott lesz az Environment.NewLine, emiatt fut hibára a Convert.ToInt32() ?

    megoldás lehet, ha a File.ReadLines Method (System.IO) -t használod inkább, és a sorokat dolgozod fel, lásd a linken az első példát...
    Mutasd a teljes hozzászólást!
  • A probléma az, hogy az entereket is beolvassa, és azok mentén is splitelni kell a stringet, amit így tudsz megtenni:

    string[] stringTomb = File.ReadAllText(@"C:\Users\Peti\Desktop\asd.csv").Split(new char[] { ';', '\n' });
    Mutasd a teljes hozzászólást!
abcd