Member 13489042 Ответов: 2

Как взять строку через ее серийный номер из текстового файла?


Я делаю викторину, где пользователь может задавать свои вопросы и ответы. Это идет в текстовый файл. Я не знаю, как взять часть текста(целую строку, не имеет значения, первая это или последняя строка в тексте). Я хочу взять случайные вопросы из этого текстового файла, поэтому я подумал, что есть способ взять серийный номер строки и вызвать его, чтобы получить вопрос. Я хочу потом использовать

Random r = новый случайный();
кто выберет случайное число(вопрос)

Это часть кода, который показывает запись вопроса в текстовый файл.

StreamWriter sw = новый
StreamWriter(loc,true);
ув.Метода WriteLine(текстовое поле textbox1.Текст);
ув.Рядом();
Например, Random r = new Random(); выберите число 5, а затем он получит 5-ю строку в тексте (5-й вопрос) и поместит ее в метку. Надеюсь, вы поняли, что я хочу сделать

Что я уже пробовал:

Я не знаю,что делать, я пытался найти команду для этого, но я не нашел ее.

2 Ответов

Рейтинг:
18

Peter Vegter

Вы должны прочитать строку за строкой от начала файла, пока не дойдете до нужной строки.
Было бы более эффективно (если строк не слишком много) прочитать все строки сразу в памяти (например, в списке "строка") и получить строки оттуда:

List<string> allQuestions = File.ReadAllLines(fileName).ToList();

Например, чтобы получить случайный вопрос:
string question = allQuestions[r.Next(allQuestions.Count - 1)];

(F-ES Sitecore рассказал вам здесь о случайных числах.)

Следующим (легким) шагом было бы также включить ответы...


Member 13489042

Я получаю ошибку " система.Array' не содержит определения для 'ToList' ".
Я добавил Sytem.Data.Линк, но это не работает.
У меня есть visual studio 2005 :(

Peter Vegter

Файл.ReadAllLines(имя файла).ToList(); требуется .Net 4.

Вы должны использовать что - то вроде:

List<string> allQuestions = новый список<string>();
string[] readLines = файл.ReadAllLines(имя файла);
все вопросы.AddRange(readLines);

или вам вообще не нужно использовать список:

string[] allQuestions = File.ReadAllLines(имя файла);
строка question = allQuestions[r.Next(allQuestions.Длина - 1)];

Рейтинг:
1

F-ES Sitecore

Если вы посмотрите на документацию для Random то увидите что вы можете назвать ее так

r.Next(3)


или

r.Next(1, 3)


Первый выберет случайное число между 0 и 3 исключительными (то есть 2), второй-от 1 и 2. таким образом, первый выберет 0, 1 или 2, а второй-1 или 2. Поэтому вам нужно знать максимальное количество вопросов и использовать одну из этих версий Next, чтобы получить случайное число в диапазоне имеющихся у вас вопросов.