Перемешать строки в файле в .NET - PullRequest
3 голосов
/ 28 января 2010

Считайте, что у меня есть файл "new.txt", как,

asdfg
qwerty
zcx
poi

Теперь мне нужно перемешать строки этого текстового файла. Как я могу сделать это в C #.?

Ответы [ 6 ]

8 голосов
/ 28 января 2010
var lines = File.ReadAllLines("test.txt");
var rnd = new Random();
lines = lines.OrderBy(line => rnd.Next()).ToArray();
File.WriteAllLines("test.txt", lines);
4 голосов
/ 28 января 2010

a не очень эффективный способ будет таким: прочитать файл в IEnumerable<string>, сделать .OrderBy(line => Guid.NewGuid()) и записать это в файл

например.

var originalLines = File.ReadAllLines("test.txt");
var shuffledLines = lines.OrderBy(line => Guid.NewGuid()).ToArray();
File.WriteAllLines("test.txt", shuffledLines);
3 голосов
/ 28 января 2010

A Фишер-Йейтс шаффл не так сложно реализовать, я думаю.

1 голос
/ 28 апреля 2010

Я нашел, что делать это в MS Excel полезно, и думал опубликовать его здесь.

1) Скопируйте содержимое файла в столбцы в MS Excel.

2) Затем в первой колонке следующего столбца (скажем, B1) введите формулу = rand ().

3) Выберите столбец B, щелкнув по заголовку

4) Edit-> Fill-> Down заполняет все ячейки случайными значениями

5) Выберите содержимое для сортировки и этот столбец B и сортируйте по возрастанию.

при этом содержимое будет перетасовано, что можно скопировать и вставить в текстовый документ.

0 голосов
/ 28 января 2010

Моим первым предположением было бы загрузить все строки в

List<string>

Затем перетасуйте список и запишите его обратно в файл, но это может быть немного тяжело, если файл большой ...

0 голосов
/ 28 января 2010

Вы можете поместить каждую строку в массив и переписать ваш файл со случайным индексом массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...