Обрезка всех строк из массива в C # - PullRequest
2 голосов
/ 27 ноября 2011

Я использовал этот код для получения содержимого каталога:

string[] savefile = Directory.GetFiles(mcsdir, "*.bin");
comboBox1.Items.AddRange(savefile);

и возвращается как

C:\Users\Henry\MCS\save1.bin
C:\Users\Henry\MCS\save2.bin

Как я могу вернуть его как только

save1.bin
save2.bin

Обратите внимание, что этим приложением будут пользоваться другие люди, поэтому имя не всегда "Генри". Спасибо.

Ответы [ 3 ]

6 голосов
/ 27 ноября 2011

Я бы рекомендовал вместо этого использовать DirectoryInfo.GetFiles и LINQ:

FileInfo[] savefile = new DirectoryInfo(mcsdir).GetFiles("*.bin");
comboBox1.Items.AddRange(savefile.Select(x => x.Name).ToArray());
3 голосов
/ 27 ноября 2011

Использование LINQ :

var strs = savefile.Select(a => Path.GetFileName(a)).ToArray();

Рассмотрение предложения minitech : Пока вы получаете массив типа FileInfo[], в этом нет необходимостипреобразовать его в массив строк.Просто установите для свойства DisplayMember имя свойства, которое вы хотите отобразить в вашем ComboBox.

FileInfo[] savefile = new DirectoryInfo(mcsdir).GetFiles("*.bin");
comboBox1.DisplayMember = "Name";
comboBox1.DataSource = savefile;

Используя это, вы сохраните свой исходный массив FileInfo[] со всей дополнительной информацией (относительно полного путик вашим файлам) и одновременно отображать только короткие имена файлов (без пути) в вашем элементе управления.

(я предполагаю, что ваш вопрос касается WinForms. Если вы используете Silverlight или WPF, вам нужно установитьсвойство, использующее атрибут "Target").

3 голосов
/ 27 ноября 2011

Использование Path.GetFileName(string path).

...