2016-08-07 2 views
-2

Я начинаю писать загрузчик. Но я хочу поместить файлы, которые необходимо извлечь, требуется или вариант в списке для последующей ссылки загрузчиком ,Поместите имя файла в список, если он содержит определенное число

Строка образца, который подается в него было бы так:

file0.txt:0 file1.txt:0 file2.txt:1 file3.txt:2 file4.txt:2 file5.txt:2 

Что я хочу сделать, это получить выход так:

Экстракт: File0.txt file1. TXT

Обязательно: file2.txt

Дополнительно: file3.txt file4.txt, file5.txt

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

+0

Можете ли вы объяснить правила, которые вы используете, чтобы определить, какой файл находится в какой категории? Непонятно, что вы опубликовали. – stuartd

+0

@stuartd Я думаю, что суффикс '0' должен извлечь' 1', а '2' является необязательным. – TheVillageIdiot

+0

Если файл содержит: 0 в списке, он будет помещен в список выписок и так далее. – null

ответ

0

Я предполагаю, что числа, которые появляются после каждого имени файла, должны указывать, какой файл они есть?

Теперь вы определенно должны попытаться решить эту проблему самостоятельно - потому что это то, как вы учитесь, но вот довольно элегантное решение LINQ, которое создает выход, идентичный приведенному вами примеру.

// Define this in your class 
enum FileType : byte 
{ 
    Extract = 0, 
    Required = 1, 
    Optional = 2, 
} 

static void Main(string[] args) 
{ 
    string input = "file0.txt:0 file1.txt:0 file2.txt:1 file3.txt:2 file4.txt:2 file5.txt:2"; 

    // create list of files 
    var list = input.Split(' ').Select(file => 
    { 
     var spl = file.Split(':'); 
     var type = (FileType)Enum.Parse(typeof(FileType), spl[1]); 
     return new { Name = spl[0], Type = type }; 
    }).ToArray(); 

    // group by type and write to console 
    var group = list.GroupBy(l => l.Type); 
    foreach (var g in group) 
    { 
     Console.WriteLine("{0}: {1}", g.Key, String.Join(",", g.Select(a => a.Name))); 
    } 
} 
0

Что вы можете сделать, это две операции разделения строк на строку, которую вы подали.

var input = "file0.txt:0 file1.txt:0 file2.txt:1 file3.txt:2 file4.txt:2 file5.txt:2"; 

// gets each pairing 
var filePairs = input.split(new[] {' '}); 

foreach(var filePair in filePairs) 
{ 
    var fileInfo = filePair.split(new[] {';'}); // [file0.txt, 0] 
    var fileName = fileInfo[0]; // file0.txt 
    var fileKeep = fileInfo[1]; // 0, 1, or 2. 
} 

Отсюда вы можете делать то, что вы хотите с деталями вы имеете в цикле foreach. И вы можете добавить информацию в список для ее хранения.