2014-09-19 5 views
0

Мне нужна помощь в удалении части строки текста из файла. Пример:Как удалить часть строки текста в C#

скажем, у меня есть выход из директории перечисления так:

Directory of C:\Data\Junk 

03/12/2014 08:35 AM <DIR>   . 
03/12/2014 08:35 AM <DIR>   .. 
03/05/2014 05:36 PM    397 junk.xml 
03/05/2014 05:36 PM    397 more_junk.xml 

и моя цель состоит в том, чтобы превратить его в следующее:

Directory of C:\Data\Junk 

. 
.. 
junk.xml 
more_junk.xml 

Я знаю, как это сделать с помощью если у меня есть ожидаемая строка для удаления, но я не могу понять, как это сделать динамически. Альтернативно - есть ли способ обнаружить, что если первая часть строки является датой, а затем удалить X символов (где X в этом случае приведет меня к началу имен файлов)?

Заранее благодарим за любую помощь здесь!

+5

В командной строке (DOS), вы можете получить имена файлов и каталогов, только с помощью 'реж/b' где' b' является для голого формата. Вы можете получить txt-файл, например 'dir/b> mytextfile.txt', и вы получите только имена файлов/каталогов без временных меток. – Habib

+0

Да, и код довольно прост. Вы в основном уже описали его, вам просто нужно превратить его в C# вместо английского. Но зачем вам это нужно. Почему бы не получить список файлов из каталога, используя встроенные методы .NET framework? – mason

+2

пространство имен System.IO намного проще в использовании. – paqogomez

ответ

2

Если вы знаете длину, сколько строки вы хотите сбросить (что выше, как представляется, не более 40 символов), вы можете сделать

yourString.Substring(40)

, чтобы получить остаток строки.

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

+0

Попробуйте показать 'string part = yourString.Substring (...)' - в зависимости от фона можно думать, что 'Substring' изменяет исходную строку ... –

3

Почему бы не просто перечислить все файлы, используя Directory.GetFiles?

string[] files = Directory.GetFiles(@"C:\Data\Junk", "*.*", SearchOption.TopDirectoryOnly); 

, а затем просто отформатировать его, как вы хотите, например

Console.WriteLine("."); 
Console.WriteLine(".."); 
foreach(string f in files) 
{ 
    Console.WriteLine(file); 
} 
Смежные вопросы