Hej
Jeg har en tekstfil kaldet tekst.txt som ser ud som følger;
12
34
555
443
456
222
222
333
4 5 6 6
3 4 5 6
2 3 4 5
Mit problem er, hvordan får jeg de nederste 3 linier i mit tekstdokument smidt ind i en 2d array 3x4. Arrayen er oprettet, men kan ikke se hvordan jeg skal kunne gøre så jeg hopper ned til de tre sidste linjer og kun anvender de tal.
Split() er jeg klar over skal anvendes for at isolere tallene, men hvordan kommer jeg ned til de tre linjer?
tak
Værsgo:
string[] content = File.ReadAllLines("C:\\test.txt"); //Stien til din fil
//Find ud af hvilken størrelse 2D array'et skal have
int dim1 = Convert.ToInt32(content[0]); //Dimension 1
int dim2 = Convert.ToInt32(content[1]); //Dimension 2
//Opret arrayet
byte[,] array = new byte[dim1, dim2];
int l = 0; //Nuværende første-dimension
//Loop fra X sidste linje og til enden (Hvor X er størrelsen af dimension 1 i arrayet)
for (int i = content.Length - dim1; i < content.Length; i++)
{
//Split linjen ved mellemrum
string[] numbers = content[i].Split(new string[] { " " }, StringSplitOptions.None);
/* Note: For at gøre det som du beskriver
* (At linje 2 i filen beskriver dimension 2)
* har jeg puttet dim2 some 2. argument i for-loop'et herunder.
* Du kan benytte content.Length i stedet for dim2, så
* finder den selv størrelsen.
*
* Dog hvis du fjerner linje 2 i filen, så skal du også ændre
* hvordan array'et bliver oprettet i starten af koden her,
* da du så må udregne størrelsen på 2. dimension selv.
*
* Kan for eksempel gøres som jeg gør herover.
* Split sidste linje (Eller én af de andre som skal i array'et)
* og så bare tag længden (numbers.Length)
*
* Anyway, du kan bare lade den blive som her.
*/
//Gennemgå alle tallene
for (int i2 = 0; i2 < dim2; i2++)
{
array[l, i2] = Convert.ToByte(numbers[i2]); //Put tallet i arrayet
}
l++;
}
Vær opmærksom på at koden herover forventer at linjerne ligger i bunden af filen.
Så hvis du skal putte noget mere efter tallene i filen, så må du ændre koden.
Indlæg senest redigeret d. 08.10.2009 18:32 af Bruger #1927