Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    19

    [c#] leggere righe di file di testo

    Salve a tutti,
    è da un po che non sto usando il c#, e ora che ho riniziato sono un pochetto arrugginito.. In pratica devo prima leggere un file di testo e trovare il numero di righe presenti, e poi, creando un valore random, scegliere casualmente una delle righe del documento e scriverla su una textbox.
    Ho riscontrato due problemi: quando leggo il numero di righe mi rida numeri sballati, e poi la frase che compare sulla textbox è sempre la prima del file.
    per leggere il numero di righe ho usato tre modi diversi, ma i risultati sono sempre gli stessi.

    1 modo:
    codice:
     string frase;
                    int counter = 0;
                    while (sr.Peek() != -1)
                    {
                        frase = sr.ReadLine();
                        counter++;
                    }
    2 modo:
    codice:
     string counter = (new StreamReader(filePath)).ReadToEnd().Split('\n').Length;
    3 modo:
    codice:
      string frase="";
                    int counter = 0;
                    while (frase!=null)
                    {
                        frase = sr.ReadLine();
                        counter++;
                    }
    e poi qui c'è la riscrittura della riga prescelta:
    codice:
     using (StreamReader line = new StreamReader(@"c:/users/" + FuserName + "/desktop/domande.txt"))
                {
                    int lunghezza;
    Random casuale = new Random();
                    int numerocasuale = casuale.Next(1, lunghezza);
                    string domanda = "";
                    for (int i = 0; i < 3; i++)
                    {
                        domanda = "";
                        domanda = line.ReadLine();
                    }
                    textBox3.Text = domanda;
    }

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    per leggere il numero di righe puoi piu semplicemente usare

    codice:
    int counter = File.ReadAllLines(path).Length;
    oppure

    codice:
    int counter = 0;
    while (!sr.EndOfStream)
    {
      sr.ReadLine();
      counter++;
    }
    e leggi una riga casualmente con

    codice:
    int riga = rnd.Next(0, counter);
    for (int i = 0; i <= riga; i++)
      domanda = sr.ReadLine();
    
    textBox3.Text = domanda;
    oppure

    codice:
    string domanda  = File.ReadAllLines(path)[rnd.Next(0, counter)];
    P.S.
    non ho testato nulla dimmi poi se ci sono problemi

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    19
    per leggere il numero di righe, ho questo file di testo

    codice:
    Qual'è la capitale della Francia?
    Chi è il regista di Avatar?
    chi è il regista di Pulp Fiction?
    Qual'è la particella divina?
    Chi ha scritto la divina commedia?
    Chi disse "Sono Morte, il distruttore di mondi"?
    e mi restituisce sempre 23

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    19
    visto che il numero di righe mi serviva per farmi ridare una delle righe nel file in modo casuale, ho risolto cosi:

    codice:
                    
    string[] lines = File.ReadAllLines(@"c:/users/" + FuserName + "/desktop/domande.txt");
    textBox3.Text = (lines[new Random().Next(lines.Length)]);

  5. #5
    Quote Originariamente inviata da drasgo Visualizza il messaggio
    visto che il numero di righe mi serviva per farmi ridare una delle righe nel file in modo casuale, ho risolto cosi:

    codice:
                    
    string[] lines = File.ReadAllLines(@"c:/users/" + FuserName + "/desktop/domande.txt");
    textBox3.Text = (lines[new Random().Next(lines.Length)]);
    Ciao, un piccolo suggerimento anche per me, se invece del random volessi leggere un numero
    ben preciso di riga?

    Grazie
    La vita è come la scaletta di un pollaio... corta, ripida e piena di m....

    La mia vera facciozza..

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Mi sembra banale ... utilizzerai lines[numero] dove numero è il numero di linea che ti interessa
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.