2013-05-13 3 views
-4

Как вы выбираете случайную строку из встроенного текстового файла?C# Выбрать случайную строку из встроенного текстового файла?

При запуске программы он выходит из строя и дает мне эту ошибку (недопустимые символы в пути) На этой линии (String [] = randFirst File.ReadAllLines (Separis_Fantasy_Tools_PE.Properties.Resources.fnames);)

Это это то, что у меня есть.

private void btnRandom_Click(object sender, EventArgs e) 
    { 
     String nFirstName; 
     String nLastName; 

     Random fname = new Random(); 
     Random lname = new Random(); 


      String[] randFirst = File.ReadAllLines(Separis_Fantasy_Tools_PE.Properties.Resources.fnames); 
      nFirstName = randFirst[fname.Next(randFirst.Length)]; 

      String[] randLast = File.ReadAllLines(Separis_Fantasy_Tools_PE.Properties.Resources.lnames); 
      nLastName = randLast[lname.Next(randLast.Length)]; 


     txtCharacterName.Text = nFirstName + " " + nLastName; 
     return; 


    } 
+7

Что не работает? Это ошибка? Это плохо работает? –

+0

Когда я запускаю программу, он сбой и дает мне эту ошибку (нелегальные символы в пути). В этой строке (String [] randFirst = File.ReadAllLines (Separis_Fantasy_Tools_PE.Properties.Resources.fnames);) – cpar

+0

Это может быть что-то, что вы захотите чтобы добавить к вашему вопросу .... Большая разница между ним не выдает права и взрыва .. –

ответ

1

Separis_Fantasy_Tools_PE.Properties.Resources.fnames является сам текстовый файл, а не путь к текстовому файлу.

private void btnRandom_Click(object sender, EventArgs e) 
{ 
    String nFirstName; 
    String nLastName; 

    Random rnd= new Random(); 


    String[] randFirst = Separis_Fantasy_Tools_PE.Properties.Resources.fnames.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); 
    nFirstName = randFirst[rnd.Next(randFirst.Length)]; 

    String[] randLast = Separis_Fantasy_Tools_PE.Properties.Resources.lnames.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); 
    nLastName = randLast[rnd.Next(randLast.Length)]; 


    txtCharacterName.Text = nFirstName + " " + nLastName; 
    return; 


} 

одно изменение, вам не нужно два случайных объектов, просто использовать один и вызвать next дважды. Вам, вероятно, не нужно беспокоиться об этом, но вы также должны знать, что, как вы написали свой код, вы могли бы получить same random number every time you call your function (если вы делаете это очень быстро).

+0

спасибо !! Ваш совет помог и его работа. – cpar

+0

Это очень помогло мне. Отличный ответ. –

Смежные вопросы